
本文讲解如何在 WordPress 中精准控制 Google AdSense 广告的显示逻辑:仅在指定文章 URL(如 /top-10-foods/)的第 2 页及后续分页中展示广告,而首页(即 /top-10-foods/ 或 /top-10-foods/1)完全隐藏。
本文讲解如何在 wordpress 中精准控制 google adsense 广告的显示逻辑:仅在指定文章 url(如 `/top-10-foods/`)的第 2 页及后续分页中展示广告,而首页(即 `/top-10-foods/` 或 `/top-10-foods/1`)完全隐藏。
要实现“仅在分页第 2 页及以上显示广告”,关键在于准确识别当前请求的分页序号,并结合特定 URL 路径进行条件判断。WordPress 提供了 get_query_var('paged') 函数用于获取当前分页编号(首页返回空或 0,第二页起返回 2、3…),但需注意:在主循环(如 index.php 或 single.php)中,该值默认为整数;若在自定义查询中使用,还需确保 paged 参数已正确传递。
以下是推荐的完整实现方案:
✅ 正确写法(适配所有标准主题)
<?php // 获取当前分页号,首页默认为 1
$page_num = get_query_var('paged') ? (int) get_query_var('paged') : 1;
// 判断是否为指定文章路径(例如 domain.com/top-10-foods)
$current_path = strtok($_SERVER['REQUEST_URI'], '?'); // 去除查询参数
$target_slug = '/top-10-foods';
// 仅当路径匹配 且 分页号 > 1 时显示广告
if ($current_path === $target_slug && $page_num > 1) :
?>
<div id="myAd">
<!-- 此处插入您的 AdSense 代码 -->
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-XXXXXXXXXXXXXXXX" data-ad-slot="YYYYYYYYYY" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
<?php endif; ?>
⚠️ 注意事项
- 不要使用 is_post_url():WordPress 核心中不存在该函数,这是导致原代码报错的根本原因。
- 路径匹配要严谨:使用 strtok($_SERVER['REQUEST_URI'], '?') 可安全剥离 URL 中的 ?s=xxx 或 #section 等干扰项,避免误判。
- 避免硬编码域名:上述逻辑基于路径(/top-10-foods)而非完整 URL,兼容 HTTP/HTTPS、www/non-www 及多站点部署。
- 性能友好:无需额外数据库查询,仅依赖 WordPress 查询变量与 PHP 原生字符串处理。
- 兼容性保障:get_query_var('paged') 在主查询(Main Query)中始终有效;若用于 WP_Query 自定义循环,请显式传入 'paged' => get_query_var('paged') 参数。
? 扩展建议(可选)
如需支持多个目标路径(如 /top-10-foods、/best-recipes、/healthy-diet),可改用数组匹配:
$allowed_paths = ['/top-10-foods', '/best-recipes', '/healthy-diet'];
if (in_array($current_path, $allowed_paths) && $page_num > 1) {
// 显示广告
}
通过以上方式,您即可精准实现“首页不展示、分页从第 2 页起展示广告”的业务需求,既符合 AdSense 政策(避免过度堆砌),又提升用户体验与页面加载效率。











