wp_localize_script 带句柄 jquery - WordPress 脚本


wp_localize_script with handle jquery - wordpress script

我正在寻找下一个解决方案。我想要更快的网站,所以我将所有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句柄的工作方式有关,您需要

  1. 取消注册 jquery
  2. 取消注册 jquery-core
  3. 在脚本上使用 jquery-core 句柄
  4. 最后寄存器 jQuery,依赖于 jQuery-Core 并为 $scr 属性传递 false

法典:

wp_register_script( 'jquery', false, array( 'jquery-core' ), false, true );