WordPress站点出现googletag is not defined错误求助
解决WordPress站点“googletag is not defined”错误
问题本质
googletag是Google Ad Manager(原DFP)的全局对象,报错说明执行广告位定义代码时,该对象还未被加载。结合你的场景,核心原因要么是GTM容器未正确配置Ad Manager基础代码,要么是代码加载顺序/执行时机出问题,或是站点存在拦截冲突。
具体解决步骤
1. 检查GTM容器的Ad Manager配置
登录你的GTM后台,确认目标容器中已添加Google Ad Manager基础代码:
- 需要先加载
googletag.js脚本,通常可以通过GTM的「自定义HTML标签」添加,或者使用官方提供的Ad Manager模板。 - 必须包含初始化代码:
注意:如果GTM容器里没有这段基础代码,页面永远不会生成googletag.cmd.push(function() { googletag.pubads().enableSingleRequest(); googletag.enableServices(); });googletag对象。
2. 验证GTM代码在问题站点的加载状态
- 打开问题站点的页面源码,搜索
GTM-XXXXXX,确认GTM脚本已插入页面头部,且没有被篡改。 - 打开浏览器控制台的「Network」标签,刷新页面后查看是否成功请求
https://www.googletagmanager.com/gtm.js?id=GTM-XXXXXX:- 如果请求失败(404/500)或被拦截,检查服务器防火墙、CDN规则,或用户端的广告拦截插件。
3. 调整代码执行顺序
如果广告位定义代码是直接写在主题模板或其他插件中,可能比GTM加载的Ad Manager代码更早执行:
- 最优方案:把所有
googletag相关代码(包括报错的广告位定义)都移到GTM容器中,确保在Ad Manager基础代码加载完成后再执行。 - 临时方案:修改主题中的代码,添加存在性判断和延迟执行:
window.addEventListener('load', function() { if (typeof googletag !== 'undefined') { googletag.cmd.push(function(){ // 此处放入你的广告位定义代码 googletag.defineSlot("/70557531/mnd_home_728x90_D1",[728,90],"div-gpt-ad-X6451308XXXXX-0").addService(googletag.pubads()); // 其他广告位代码... }); } });
4. 排查插件/主题冲突
对比问题站点和正常站点的差异:
- 临时禁用问题站点的所有插件(仅保留WP Headers and Footers),刷新页面看错误是否消失。如果消失,逐个启用插件排查冲突源(常见于缓存优化、广告拦截类插件)。
- 切换到WordPress默认主题(如Twenty Twenty-Four),验证错误是否还存在,排除主题自定义代码的干扰。
5. 确认GTM容器的发布状态
检查GTM后台,确保你修改的Ad Manager配置已经发布到生产环境——预览模式的配置仅对你自己可见,线上用户无法获取更新后的代码。
内容的提问来源于stack exchange,提问作者Fede
相关产品推荐
相关产品推荐

