在WordPress中添加Google Tag Manager代码的Hook方法

用户需要了解在 WordPress 中使用 Hook 方法添加 Google Tag Manager 代码的方法。我需要解释如何通过 WordPress 的钩子系统来添加 GTM 代码。首先,我应该介绍 WordPress 的钩子 (hooks) 概念,主要是动作钩子 (action hooks),因为我们需要在页面渲染的特定位置插入代码。

然后,我需要提供具体的代码示例,说明如何使用wp_head钩子添加 GTM 的头部代码,以及使用wp_body_open钩子添加 GTM 的 body 代码。需要注意的是,wp_body_open钩子是在 WordPress 5.2 版本中引入的,如果主题不支持这个钩子,可能需要提供替代方案,比如使用wp_footer钩子或者修改主题文件。

我应该提供一个完整的代码示例,展示如何将这些代码添加到主题的 functions.php 文件中,或者添加到自定义插件中。同时,需要提醒用户替换代码中的 GTM 容器 ID 为他们自己的 ID,并说明如何找到这个 ID。

*后,应该给出一些注意事项,比如儿童主题的使用、代码备份等。

在 WordPress 中使用 Hook 方法添加 Google Tag Manager (GTM) 代码是一种安全且推荐的做法,无需直接修改主题核心文件。以下是实现方法:你可以通过wp_headwp_body_open这两个动作钩子来分别添加 GTM 的头部代码和 body 代码。这种方法适用于大多数现代 WordPress 主题。

要在WordPress的<head><body>部分添加Google Tag Manager (GTM)代码,你可以使用WordPress提供的钩子(hook)来实现。以下是完整的实现方法:

方法一:使用wp_head和wp_body_open钩子

1. 在主题的functions.php文件中添加以下代码

/**
 * 添加Google Tag Manager代码到<head>部分
 */
function add_gtm_head_code() {
    $gtm_id = 'GTM-XXXXXXX'; // 替换为你的GTM容器ID
    ?>
    <!-- Google Tag Manager -->
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','<?php echo $gtm_id; ?>');</script>
    <!-- End Google Tag Manager -->
    <?php
}
add_action('wp_head', 'add_gtm_head_code', 10);

/**
 * 添加Google Tag Manager noscript代码到<body>开头部分
 */
function add_gtm_body_code() {
    $gtm_id = 'GTM-XXXXXXX'; // 替换为你的GTM容器ID
    ?>
    <!-- Google Tag Manager (noscript) -->
    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=<?php echo $gtm_id; ?>"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->
    <?php
}
add_action('wp_body_open', 'add_gtm_body_code', 10);

或者(简化版本)

function gtm_head_code() {
    echo "<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>
<!-- End Google Tag Manager -->";
}
add_action('wp_head', 'gtm_head_code');

function gtm_body_code() {
    echo '<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->';
}
add_action('wp_body_open', 'gtm_body_code');

方法二:使用插件方式实现

如果你想通过插件来实现,可以创建一个简单的插件:

  1. wp-content/plugins/目录下创建一个新文件夹,例如gtm-tag-manager
  2. 在该文件夹中创建一个PHP文件,例如gtm-tag-manager.php
  3. 添加以下代码:
<?php
/*
Plugin Name: Google Tag Manager
Description: Adds Google Tag Manager code to head and body
Version: 1.0
Author: Your Name
*/

function gtm_head_code() {
    $gtm_id = 'GTM-XXXXXXX'; // 替换为你的GTM容器ID
    echo "<!-- Google Tag Manager -->
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','".$gtm_id."');</script>
    <!-- End Google Tag Manager -->";
}
add_action('wp_head', 'gtm_head_code');

function gtm_body_code() {
    $gtm_id = 'GTM-XXXXXXX'; // 替换为你的GTM容器ID
    echo '<!-- Google Tag Manager (noscript) -->
    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id='.$gtm_id.'"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->';
}
add_action('wp_body_open', 'gtm_body_code');

注意事项

  1. 将代码中的GTM-XXXXXXX替换为你自己的Google Tag Manager容器ID
  2. wp_body_open钩子需要WordPress 5.2或更高版本支持
  3. 如果你的主题不支持wp_body_open钩子,你可能需要在主题的header.php文件中手动添加<?php do_action('wp_body_open'); ?>代码到<body>标签之后
  4. 如果你不想修改主题文件,也可以考虑使用现有的GTM插件,如”DuracellTomi’s Google Tag Manager for WordPress”

这两种方法都能有效地将GTM代码添加到WordPress网站的head和body部分,确保GTM能够正常工作。

滚动至顶部
扫描微信二维码联系我们 关闭