問題描述
如果一個插件使用了一些腳本 (突出的例子是 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。