JQuery需要在<Head>中定义,但重力表单在<Footer>中定义它

时间:2017-03-29 作者:Kellen

我正在尝试安装GTM (Google Tag Manager)WordPress 但我遇到了一些问题。自从GTM 放置在<head>, 它要求在GTM 已加载脚本。Gravity Forms 在我的整个网站中使用,但它在<footer>. 所以,我有两个问题:

在全球范围内定义JQuery的正确方法是什么Gravity Forms 还要定义JQuery吗?这会不会导致在包含Gravity Forms? 据我所知,有两个JQuery声明是有问题的。如果这是一个问题,我将如何防止Gravity Forms 从呈现JQuery脚本

1 个回复
最合适的回答,由SO网友:AncientRo 整理而成

A bit of context:

Gravity表单本身不包含jQuery,也不向站点添加jQuery。jQuery包含在WordPress中,当插件或主题需要jQuery时,您只需告诉WP页面上需要jQuery,它将负责使其可用。

因此,多次添加它不会有问题。它可以在多个地方被请求(例如通过多个功能或插件),但WP知道在页面上只添加一次。

Regarding your specific use case:

安装Google Tag Manager时,是否使用wp_enqueue_script? 如果是这样,正如上面评论中提到的@Andy,当您将脚本排队时,可以将jQuery指定为该脚本的依赖项,WP将在脚本需要之前在页面上提供它:

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\');
您可以在代码参考页上查看有关脚本排队功能的更多信息:wp_enqueue_script. 您还可以在页面底部的注释部分看到示例实现代码。

依赖项被指定为第三个参数,它是一个数组,包含脚本依赖的脚本句柄名称列表。您可以通过输入array(\'jquery\').

第5个参数指定是否应在页脚中添加脚本(在关闭</body> 标签)。默认情况下,此参数为false 脚本添加在头部,但为了清晰起见,我将其包括在内。

文件src被指定为第二个参数,您可以根据自己的具体需要构建它(如果您是从主题、插件、文件夹结构等调用它)。我为一个主题输入了一个示例src。

Alternative option:

如果您不使用wp_enqueue_script 并且不能将jQuery指定为依赖项,但仍希望告诉WP在头部包含jQuery:

(默认情况下,jQuery添加到<head> 但是插件可能已经更改了默认行为,并在页脚中请求了它。)

下面的线程讨论了一些有关如何通过代码更改jQuery位置的技术。它讨论了如何将其更改为页脚,但同样的想法也适用于将其更改为页眉:Enqueue core jQuery in the footer?