我正在寻找下一个解决方案。我想要更快的网站,所以我将所有JS连接到一个文件并放置在页脚中。我的一个js是jQuery,我使用下一个钩子和函数:
if (!function_exists("ef_theme_scripts")) {
function ef_theme_scripts() {
wp_deregister_script('jquery');
wp_register_script('jquery', get_template_directory_uri() . '/js/min/script.min.js', null, null, true);
wp_enqueue_script('jquery');
$params = array(
'ajax_url' => admin_url('admin-ajax.php'),
'ajax_nonce' => wp_create_nonce('user_nonce'),
);
wp_localize_script( 'jquery', 'ajax_object', $params );
}
}
add_action('wp_enqueue_scripts', 'ef_theme_scripts');
我称我的句柄为"jquery",因为可能有一些脚本(例如来自插件)想要使用 jquery,所以我需要添加称为这个句柄"jquery"的句柄。
除了本地化之外,一切都很好。例如,当我将脚本句柄重命名为"custom-jquery"时,wp_localize_script可以正常工作。
我使用 WP 4.0.1。感谢您的帮助
很重要! wp_localize_script()
必须在使用 wp_register_script()
或 wp_enqueue_script()
注册其附加到的脚本后调用。
更多信息
我问了一个类似的问题,并在这里得到了可行的解决方案:
wp_localize_script无法使用 jquery 句柄
基本上这与WP与jQuery句柄的工作方式有关,您需要
- 取消注册 jquery
- 取消注册 jquery-core
- 在脚本上使用 jquery-core 句柄
- 最后寄存器 jQuery,依赖于 jQuery-Core 并为 $scr 属性传递 false
法典:
wp_register_script( 'jquery', false, array( 'jquery-core' ), false, true );