问题描述
如果一个插件使用了一些脚本 (突出的例子是 jQuery UI Datepicker),但是脚本渲染输出并不满意,那么有两种可能性:
1. 取消注册脚本> 添加自己的版本
所以首先你需要检查手柄,然后找到优先级和钩子 (wp_enqueue_scripts,login_enqueue_scripts 等)… 你知道这个钻头。
2. 更改 jQuery 插件参数
通常 – 如果插件不是垃圾,它会将参数从 PHP 推送到 JS
wp_localize_script( $handle, $object_name, array( 
    // data
) );
现在,这是将数据添加到 JS 脚本的一种智能方式,但是默认情况下它不可过滤。 WP_Scripts 和 WP_Dependencies 都不提供任何过滤器用户可以稍后利用
Question: How can we filter the arguments/parameters that are moved from PHP to Javascript using
wp_localize_script?
最佳解决思路
wp_localize_script()在全局变量 $wp_scripts 上调用 localize()方法。我们可以将此变量设置为 WP_Scripts 的子类的实例:
class Filterable_Scripts extends WP_Scripts
{
    function localize( $handle, $object_name, $l10n )
    {
        $l10n = apply_filters( 'script_l10n', $l10n, $handle, $object_name );
        return parent::localize($handle, $object_name, $l10n);
    }
}
add_action( 'wp_loaded', function() {
    $GLOBALS['wp_scripts'] = new Filterable_Scripts;
});
主题自定义程序不使用它,它创建一个单独的 WP_Scripts 实例 (请参阅 wp-admin/customize.php) 。也可以替换它:
add_action( 'customize_controls_init', function() {
    $GLOBALS['wp_scripts'] = new Filterable_Scripts;
    $GLOBALS['wp_scripts']->registered = $GLOBALS['registered'];
});
没有一个测试,只是一个想法。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。
 
											
				