如何在WordPress页面Body特定位置调用AdSense脚本?
解决AdSense脚本在特定位置调用的问题
一、先修复函数语法错误
你当前的函数存在PHP语法问题——在PHP代码块里直接写HTML标签会导致解析失败,必须用正确的方式输出脚本:
写法1:用echo输出脚本
function adsense_script() { $path = $_SERVER['REQUEST_URI']; $find = 'sdm'; if (strpos($path, $find) !== false) { echo '<script> // 这里粘贴完整的AdSense脚本内容 </script>'; } }
写法2:闭合PHP标签后直接写HTML
function adsense_script() { $path = $_SERVER['REQUEST_URI']; $find = 'sdm'; if (strpos($path, $find) !== false) { ?> <script> // 这里粘贴完整的AdSense脚本内容 </script> <?php } }
二、根据目标位置选择调用方式
1. 保持在<body>标签后调用(原需求位置)
首先确认你的主题支持wp_body_open钩子:主题的header.php文件中,<body>标签后必须有<?php wp_body_open(); ?>代码。如果主题已支持,直接使用你原来的调用代码即可(前提是函数已修复语法):
add_action( 'wp_body_open', 'adsense_script' );
2. 在特定标签后调用(比如文章标题<h1>后)
方法1:利用主题自定义钩子
如果你的主题提供了标题后的钩子(比如after_post_title),直接绑定:
add_action( 'after_post_title', 'adsense_script' );
方法2:通过内容过滤器插入
如果标题后紧跟文章内容,可使用the_content过滤器在内容开头插入脚本:
function adsense_after_title($content) { $path = $_SERVER['REQUEST_URI']; $find = 'sdm'; // 仅在单篇文章页生效,可根据需求调整条件 if (strpos($path, $find) !== false && is_single()) { $ad_script = '<script> // 这里粘贴完整的AdSense脚本内容 </script>'; return $ad_script . $content; } return $content; } add_filter('the_content', 'adsense_after_title');
方法3:直接修改模板文件
在子主题对应的模板文件(比如single.php)中,找到标题输出代码,在其后直接调用函数:
<?php the_title('<h1 class="entry-title">', '</h1>'); ?> <?php adsense_script(); ?>
三、额外排查要点
- 确认AdSense脚本本身无错误:检查发布者ID、广告单元ID是否正确,脚本格式是否完整。
- 关闭广告屏蔽工具:浏览器插件、网站安全插件可能拦截广告加载。
- 查看控制台错误:打开浏览器开发者工具,检查控制台是否有脚本加载失败的报错信息。
- 验证服务器环境:确保主机没有拦截脚本输出,或限制了第三方脚本加载。
内容的提问来源于stack exchange,提问作者ALW
相关产品推荐
相关产品推荐

