函数文档

_wp_customize_loader_settings()

💡 云策文档标注

概述

_wp_customize_loader_settings() 函数用于为 customize-loader 脚本添加设置,包括跨域检测、浏览器信息和本地化字符串,并将设置以 JavaScript 变量形式注入到脚本中。

关键要点

  • 函数生成一个包含 URL、跨域状态、浏览器检测和本地化文本的设置数组。
  • 通过 wp_json_encode() 将设置编码为 JSON,并添加安全选项如 JSON_HEX_TAG 和 JSON_UNESCAPED_SLASHES。
  • 使用 wp_scripts() 获取 WP_Scripts 实例,将设置作为数据附加到 'customize-loader' 脚本,支持数据合并。
  • 涉及多个 WordPress 核心函数,如 admin_url()、home_url()、wp_is_mobile()、esc_url() 和 __()。
  • 自 WordPress 3.4.0 版本引入,用于自定义加载器脚本的配置。

代码示例

function _wp_customize_loader_settings() {
    $admin_origin = parse_url( admin_url() );
    $home_origin  = parse_url( home_url() );
    $cross_domain = ( strtolower( $admin_origin['host'] ) !== strtolower( $home_origin['host'] ) );

    $browser = array(
        'mobile' => wp_is_mobile(),
        'ios'    => wp_is_mobile() && preg_match( '/iPad|iPod|iPhone/', $_SERVER['HTTP_USER_AGENT'] ),
    );

    $settings = array(
        'url'           => esc_url( admin_url( 'customize.php' ) ),
        'isCrossDomain' => $cross_domain,
        'browser'       => $browser,
        'l10n'          => array(
            'saveAlert'       => __( 'The changes you made will be lost if you navigate away from this page.' ),
            'mainIframeTitle' => __( 'Customizer' ),
        ),
    );

    $script = 'var _wpCustomizeLoaderSettings = ' . wp_json_encode( $settings, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ) . ';';

    $wp_scripts = wp_scripts();
    $data       = $wp_scripts->get_data( 'customize-loader', 'data' );
    if ( $data ) {
        $script = "$datan$script";
    }

    $wp_scripts->add_data( 'customize-loader', 'data', $script );
}

📄 原文内容

Adds settings for the customize-loader script.

Source

function _wp_customize_loader_settings() {
	$admin_origin = parse_url( admin_url() );
	$home_origin  = parse_url( home_url() );
	$cross_domain = ( strtolower( $admin_origin['host'] ) !== strtolower( $home_origin['host'] ) );

	$browser = array(
		'mobile' => wp_is_mobile(),
		'ios'    => wp_is_mobile() && preg_match( '/iPad|iPod|iPhone/', $_SERVER['HTTP_USER_AGENT'] ),
	);

	$settings = array(
		'url'           => esc_url( admin_url( 'customize.php' ) ),
		'isCrossDomain' => $cross_domain,
		'browser'       => $browser,
		'l10n'          => array(
			'saveAlert'       => __( 'The changes you made will be lost if you navigate away from this page.' ),
			'mainIframeTitle' => __( 'Customizer' ),
		),
	);

	$script = 'var _wpCustomizeLoaderSettings = ' . wp_json_encode( $settings, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ) . ';';

	$wp_scripts = wp_scripts();
	$data       = $wp_scripts->get_data( 'customize-loader', 'data' );
	if ( $data ) {
		$script = "$datan$script";
	}

	$wp_scripts->add_data( 'customize-loader', 'data', $script );
}

Changelog

Version Description
3.4.0 Introduced.