【问题标题】:WordPress is declaring JQuery in the FooterWordPress 在页脚中声明 JQuery
【发布时间】:2017-03-28 13:19:16
【问题描述】:

我收到了来自第 3 方的 WordPress (WP) 网站。我与 Drupal 一起工作,所以我在 WP 方面并不全面。

也就是说,我正在尝试安装 Google 跟踪代码管理器 (GTM)。但是,我收到控制台错误,指出未定义 JQuery。我发现 JQuery 是在 <footer> 中定义的,而不是在 <head> 中定义的。过去我在使用 Drupal 时遇到过这个问题,但我不确定从哪里开始使用 WP。

查看模板后,发现头部有<?php wp_head(); ?>标签,页脚有<?php wp_footer(); ?>标签。这两个标签都注入脚本,但显然,JQuery 是通过页脚标签注入的。据我所知,脚本是在 script-loader.php 文件中编译的,但该文件有点压倒性。我不确定要移动什么才能通过<?php wp_head(); ?> 标签注入 JQuery。

我已经上传了script-loader.php document to Google Drive。我会将其放入 .txt 文件中,以便在 GDrive 中读取。

如果还有什么我可以提供的,请告诉我。感谢您提供任何有用的反馈!

【问题讨论】:

    标签: php wordpress wordpress-theming google-tag-manager


    【解决方案1】:

    您想在 wordpress 中注册和排队脚本,您不要自己将它们放在页眉/页脚中。

    在主题模板文件夹中有一个functions.php文件,里面可能有一个调用wp_enqueue_scripts钩子的函数,在创建新之前搜索并修改它。

    如果没有,添加如下内容:

    add_action( 'wp_enqueue_scripts', 'add_my_script' );
    function add_my_script() {
        wp_enqueue_script( 'jquery' );
        wp_enqueue_script( 'jquery-ui-core' );
        wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/includes.js?v=2', array(
            'jquery',
            'jquery-ui-core'
        ), '1.0', true );
    }
    

    但是用你的 GTM 包含替换我的第三个队列“包含”,或者只是删除它。这将确保在正确的时间加载 jQuery 和 jQuery UI。第三个选项确保在加载我的 include.php 之前加载它们

    【讨论】:

    • 我应该把你的函数放在这个 if 语句中吗? if ( apply_filters( 'wp_auth_check_load', $show, $screen ) ) { wp_enqueue_style( 'wp-auth-check' ); wp_enqueue_script( 'wp-auth-check' ); add_action( 'admin_print_footer_scripts', 'wp_auth_check_html', 5 ); add_action( 'wp_print_footer_scripts', 'wp_auth_check_html', 5 );}
    • 不,我会将其添加为单独的函数,因为它使用单独的挂钩。你也不希望它依赖于 apply_filters 逻辑,而是每次都运行。
    • 所以,我尝试删除第三行。这是您的想法吗:add_action( 'wp_enqueue_scripts', 'add_my_script' ); function add_my_script() { wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'jquery-ui-core' ); } 它似乎不起作用,所以我怀疑我是否正确。
    • 看起来不错。您能否详细说明您用于安装 GTM 的方法?
    • 我正在使用一个名为 Head、Footer 和 Post Injections 的模块。它基本上允许我将 GTM <script> 标签注入头部,并在 <body> 之后立即注入 <noscript> 标签。
    【解决方案2】:

    在 WordPress 的 Stack Exchange 网站上发布后,I found a solution。基本上,我不得不将 GTM 脚本排入队列,将 JQuery 声明为它的依赖项。我提供的脚本如下:

    function my_theme_add_gtm_script() {
        wp_enqueue_script('google-track-manager', get_template_directory_uri() . '/assets/js/gtm.js', array('jquery'), false, false);
    }
    add_action('wp_enqueue_scripts', 'my_theme_add_gtm_script');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 2019-06-18
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多