主题js中捆绑的jQuery不能与wp_LOCALIZE_SCRIPT一起使用

时间:2018-06-20 作者:Tom M

我已经使用grunt uglify在我的主题js中绑定了jquery。现在我想阻止加载wp jquery,因为我不需要2个jquery版本,并且希望保存不必要的请求。这就是我所拥有的:

add_action(\'wp_enqueue_scripts\', function () {
    wp_dequeue_script(\'jquery\');
    wp_deregister_script(\'jquery\');
    wp_register_script(\'jquery\', get_stylesheet_directory_uri() . \'/build/scripts/app.js\');
    wp_enqueue_script(\'jquery\');
});

add_action(\'wp_enqueue_scripts\', function () {
    global $wp_query;
    wp_localize_script(\'jquery\', \'ajaxpagination\', array(
        \'ajaxurl\'      => admin_url(\'admin-ajax.php\'),
        \'query_vars\'   => json_encode($wp_query->query),
        \'is_search\'    => is_search(),
        \'current_page\' => get_query_var(\'paged\') ? get_query_var(\'paged\') : 1,
        \'max_page\'     => $wp_query->max_num_pages,
    ));
});
我给$handle 属于wp_register_script jquery,以便加载依赖项。但出于某种原因,CDATA/script标记来自wp_localize_script 将脚本注册为jquery后,将不会呈现。

我已经试过了

取消注册jquery而不首先将其退出队列

1 个回复
SO网友:Shibi

您不能使用wp_localize_script 具有jquery. 此函数使用WP_Scripts::localize() 一开始就有条件的函数。

您可以在文件\\wp includes\\class中看到它。wp脚本。php第414行

if ( $handle === \'jquery\' )
    $handle = \'jquery-core\';
您可以执行其他操作,如使用其他操作添加脚本,如wp_head 如果你的脚本在<head>wp_print_footer_scripts 如果它在页脚。

add_action(\'wp_enqueue_scripts\', function () {
    wp_dequeue_script(\'jquery\');
    wp_deregister_script(\'jquery\');
    wp_register_script(\'jquery\', get_stylesheet_directory_uri() . \'/build/scripts/app.js\');
    wp_enqueue_script(\'jquery\');
});

add_action(\'wp_head\', function() {
    global $wp_query;

    $my_object = array(
        \'ajaxurl\'      => admin_url(\'admin-ajax.php\'),
        \'query_vars\'   => json_encode($wp_query->query),
        \'is_search\'    => is_search(),
        \'current_page\' => get_query_var(\'paged\') ? get_query_var(\'paged\') : 1,
        \'max_page\'     => $wp_query->max_num_pages,
    );
    ?>
    <script>
        var ajaxpagination = <?php echo wp_json_encode($my_object); ?>
    </script>
    <?php
}, 0, 1);

结束

相关推荐

为什么我的WordPress jQuery-AJAX调用不起作用?

您好,我目前正在开发wordpress应用程序。我已经能够完成应用程序所需的几乎所有内容。我甚至能够使用Jquery Ajax将数据插入到我的自定义数据库表中,并获得提交的背景反馈。但我现在的目标是根据下拉选择自动填充文本字段。我在网上读了几篇文章,我在这里看到了答案Why is my AJAX call not working? 但我仍然无法解决问题,以下是我的代码:/* Fetching file from the database*/ wp_enqueue_script(\'jquery\