【问题标题】:Wordpress Child Theme jQuery conflicts with Parent Theme's jQueryWordpress 子主题 jQuery 与父主题的 jQuery 冲突
【发布时间】:2018-06-21 13:46:30
【问题描述】:

我开发了一个 Wordpress 子主题,我在其中加入了 jQuery:

wp_enqueue_script('jquery-js', '//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js');

但它与在父主题中排队的 jQuery 冲突。

所以,我删除了上面的 enqueue 脚本并在我的脚本 enqueue 中添加了依赖项:

wp_enqueue_script('main-js', get_theme_file_uri('/js/scripts-bundled.js'), array('jquery'), '1.2', true);

但它不起作用(在浏览器控制台中出现错误“$ 不是函数”)。我检查了页面源代码,发现父主题的脚本是在我的子主题的脚本之后加载的

我该如何解决这个问题?

【问题讨论】:

    标签: jquery wordpress wordpress-theming


    【解决方案1】:

    第一种方法是错误的,你不应该将外部 jQuery 文件加入队列。

    第二种方法是正确的,但是有一个小问题,可以通过以下两种方法之一来解决:

    1. 将 js/scripts-bundled.js 中的所有 $ 符号替换为 jQuery。它会解决问题。这比我在下面写的方式更正确。

    2. 使用此脚本禁用 jQuery Noconflict 模式:(您可以将其添加到主题的 functions.php 中)

      function disable_noconflict() {
      wp_add_inline_script( 'jquery-core', '$ = jQuery;' );
      }
      add_action( 'wp_enqueue_scripts', 'disable_noconflict' );
      

    【讨论】:

    • 我可以建议另一种方法是理想的吗?而不是用jQuery替换所有$,而是将所有jQuery包装在一个无冲突安全的文档中,如下所示:jQuery(function($) { // ... $ is safe to use in here .... }); - 我不建议禁用无冲突模式...... WP这样做是为了一个理由!
    • 我采用了#1 的方法,解决了这个问题。非常感谢!为什么我不能使用 $?
    猜你喜欢
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2012-04-15
    相关资源
    最近更新 更多