WordPress站点Google Ads运行正常后不展示 代码仅残留adsbygoogle推送语句
问题原因排查
- WordPress自定义HTML块语法解析错误:你提交的原始代码存在3个重复的
<!-- /wp:html -->闭合标签,不符合WordPress古腾堡块的语法规范,WordPress在后台保存、或者前台渲染内容时,会自动修剪结构异常的自定义HTML块内容,最终仅残留未被识别为块内冗余内容的单行JS语句。 - 插件过滤规则拦截:安全防护、代码优化、缓存类插件的恶意代码拦截规则,会将外部引入的AdSense script标签、
ins广告标签判定为异常内容,自动过滤删除,仅保留无外部资源引用的JS执行语句。 - 标签结构冲突:你在同一个HTML块内同时放置了普通网页AdSense代码和AMP网页专用的
amp-ad标签,如果站点安装了AMP适配插件,插件会自动修剪非AMP兼容的代码,适配异常时就会出现代码被大面积截断的问题。 - WordPress自动格式化机制破坏结构:默认开启的wpautop自动格式化功能,会自动给代码中的换行、空白处添加
p/br标签,打乱原有广告代码的标签结构,导致浏览器渲染时丢弃无效的标签内容。
修复方案
- 修正自定义HTML块语法
将所有广告代码包裹在一对<!-- wp:html -->和<!-- /wp:html -->标签内,删除多余的闭合标签,修正后的参考代码如下:
<!-- wp:html --> <!-- 普通页面AdSense代码 --> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9310298206025962" crossorigin="anonymous"></script> <!-- Display Ad Unit 1 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-9310298206025962" data-ad-slot="9808339852" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <!-- /wp:html -->
AMP端的amp-ad代码不要和普通页面代码放在同一个块内,使用AMP插件自带的广告配置功能单独添加即可。
排查拦截广告代码的插件
逐一禁用站点安装的安全插件、代码优化插件、缓存插件,每禁用一个就检查广告代码是否完整,定位到拦截插件后,在插件的白名单配置中允许AdSense相关的script、ins、amp-ad标签加载,同时将广告代码所在的页面加入过滤排除列表。禁用自动格式化功能
如果广告代码放在文章/页面内容中,可针对单篇内容关闭wpautop自动格式化功能,或者安装专门的代码管理插件部署广告,避免WordPress自动修改代码结构。使用官方插件部署广告
直接安装Google官方的AdSense WordPress插件,绑定账号后自动部署广告位,无需手动粘贴代码,可避免代码被修剪、过滤的问题。
内容的提问来源于stack exchange,提问作者Ahsan Ul Haq
相关产品推荐
相关产品推荐

