AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 79486853
Accepted
Greg
Greg
Asked: 2025-03-05 22:50:47 +0800 CST2025-03-05 22:50:47 +0800 CST 2025-03-05 22:50:47 +0800 CST

Google Tag Manager 正在破坏我用 Oxygen 构建的网站 (WordPress)

  • 772

在过去的一年里,我已经将 GTM 集成到我使用 Oxygen 构建的网站中,形式如下:

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXX"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-XXXXX');
  gtag('config', 'GTM-XXXXX');
</script>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GT-XXXXX" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXX" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->

Google Analytics 和 AdWords 运行正常——我当时专注于最大化点击次数。大约 1.5 个月前,我将策略改为最大化转化,并在网站上创建了多个转化事件,而无需修改代码。一切都很顺利——我注意到用户参与度显著提高,预算利用率下降。但这种情况只持续了一段时间。

几天前,转换停止了。GTM 无法被调试器检测到,即使它在面板中显示为已连接。因此,我尝试将网站上的代码更改为 Google 建议的代码:

<!-- 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-XXXXX');</script>
<!-- End Google Tag Manager -->
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->

使用此版本,GTM 变得可见,并且在调试模式下测试时转换似乎可以正常工作。但是,出现了冲突,特别是与 Oxygen 插件有关 - 某些元素停止显示,甚至 Oxygen 编辑器也变得无法使用。此外,WP Maps Pro 插件处理的地图无法加载。

我尝试了所有方法——我分析了原始代码停止工作时所做的所有更改。我还修改了新代码,以防止它在 Oxygen 编辑器中加载,并确保它在所有其他脚本之后异步加载。然而,与地图的冲突仍然存在。我也不希望延迟加载对转换产生负面影响。

我也尝试通过各种插件添加 GTM,但每次从服务器加载 gtm.js 时,都会出现问题。

我还可以检查什么或者做什么?

//EDIT 根据要求从控制台添加屏幕截图。

控制台错误

wordpress
  • 1 1 个回答
  • 81 Views

1 个回答

  • Voted
  1. Best Answer
    BNazaruk
    2025-03-06T02:57:47+08:002025-03-06T02:57:47+08:00

    您以前使用的旧代码片段未加载或使用 GTM。至少在您展示的代码片段中。它使用了 gtag。Gtag 与 GTM 非常不同,最佳做法是不要像以前一样直接使用 gtag,而是让 GTM 自行隐式管理它。当 gtag 与 GTM 一起手动加载时,它可能会与 GTM 自身对 gtag 的初始化发生冲突。

    忽略 noscripts。完全不用它们也没关系。它不会在没有 JS 的情况下工作。这是 Google 一直喜欢的一种误导。

    当转换停止工作时,您只需仔细调试并恢复即可。相反,您改变了整个架构(如果您之前确实没有加载 GTM),这意味着您必须在 GTM 的 UI 中重新实现所有 gtag 逻辑。您可能已经安装了 GTM,并且同时加载了 gtag,但您没有在问题中引用 GTM 加载代码。这让我怀疑您可能加载了两次 GTM?我相信 GTM 可以解决这个问题。但是,请检查 DOM 中是否加载了两个 GTM 实例。

    现在来谈谈看似由 GTM 引起的功能问题。

    当然,GTM 有能力干扰页面。避免提交 document.writes 和使用 GTM 中的 dataLayer 以外的全局变量被认为是最佳实践,但并不是每个人都知道这一点。

    为您提供简单的调试步骤:

    1. 使用 devtools drawer 的网络请求阻止程序来阻止 gtm 加载,看看功能问题是否仍然发生。
    2. 如果仍然出现这种情况,则问题不在于 GTM,而在于您编辑模板/插件的方式。如果仍然出现这种情况,请转到 GTM 并开始禁用标签。
    3. 从暂停自定义 html 标签开始,然后切换到暂停使用任何自定义 javascript 变量的任何内容。暂停时,请继续检查以找出哪一个会干扰您的功能。
    • 0

相关问题

  • 为 WooCommerce 上特定类别或多个类别的用户隐藏产品价格

  • 设置默认“管理库存?” 创建新变体时选择“是”(Woocommerce)

  • 使 WordPress 帖子标题包含使用 wp_insert_post() 创建的新帖子的 id

  • 著名的五分钟 WordPress 安装过程 网站迁移后

  • 我的 WordPress 网站上的输入/输出使用限制已达到最大值

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve