带有句柄jquery的wp_localize_script - wordpress脚本

时间:2014-11-25 12:39:37

标签: javascript php jquery ajax wordpress

我正在寻找下一个解决方案。我想要更快的网站,所以我将所有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所以我需要添加一个名为this handle" jquery"。

除了本地化之外,一切都很有效。当我将脚本句柄重命名为" custom-jquery"然后wp_localize_script没有问题。

我使用WP 4.0.1。谢谢你的帮助

2 个答案:

答案 0 :(得分:0)

重要! wp_localize_script()必须在使用wp_register_script()wp_enqueue_script()注册附加到的脚本后调用。

More info

答案 1 :(得分:0)

我问了一个类似的问题,并在这里得到了有效的解决方案:

wp_localize_script not working with jquery handle

基本上这与WP使用jQuery句柄的方式有关,你需要

  1. 取消注册jquery
  2. 取消注册jquery-core
  3. 在脚本上使用jquery-core句柄
  4. 在末尾注册jquery,依赖于jquery-core并为$ scr属性传递false
  5. 代码:

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