_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. |