博客 SEO 诊断记录:薄内容标签页 noindex 方案实战与多语言测试验证
在之前的 SEO 诊断中,我发现博客有近 15000 个页面未被索引,其中包含了约 6000 个薄内容标签页。为了避免这些只有零星文章的标签页拖累整站质量评分,我制定了“质量控流”策略:暂不删除标签,但在代码层面自动为文章数 < 2 的标签页添加 <meta name="googlebot" content="noindex, follow">。
这样既保留了网站的原有结构内链,又明确告知搜索引擎暂不索引这些低质页面。以下是基于 WordPress + Polylang 多语言环境的实战落地与测试全过程。
一、 代码实现:Hook 拦截与动态注入
在主题的 functions.php 文件中,我添加了以下代码片段,通过 WordPress 的 wp_head 钩子动态注入 noindex 标签:

(如上图所示,在第 57 行之后插入了 noindex 动态注入逻辑)
// 为文章数小于2的薄内容标签页添加 noindex 标签
add_action( 'wp_head', 'add_noindex_to_thin_tag_pages' );
function add_noindex_to_thin_tag_pages() {
// 仅在标签归档页面执行
if ( is_tag() ) {
// 获取当前标签对象
$tag = get_queried_object();
// 判断是否存在且文章计数小于2
if ( $tag && isset( $tag->count ) && $tag->count < 2 ) {
// 针对您需求中的 Googlebot
echo '<meta name="googlebot" content="noindex, follow">' . "\n";
// 建议同时添加通用 robots 标签,以便 Bing、百度等其他搜索引擎也遵循此规则
echo '<meta name="robots" content="noindex, follow">' . "\n";
}
}
}
核心逻辑很简单:使用 is_tag() 判断当前页面,通过 get_queried_object() 获取当前标签对象及其 count 属性,如果计数小于 2,则输出 noindex 标签。
二、 深度解析:Polylang 多语言标签的底层机制
很多同学可能会有疑问:在多语言环境下,$tag->count 到底统计的是全站的总文章数,还是当前语言的文章数?这要从 Polylang 的底层实现机制说起。
Polylang 处理多语言标签时,并不是在一个标签(Term)上叠加多语言字段,而是为每种语言创建独立的 Term。
举个例子:在中文语言下有一个标签 “bsc”,当我在英文语言下再添加一个标签 “bsc” 时,数据库里实际上生成了两个拥有不同 ID 的独立 Term。Polylang 只是通过其内部的数据表,自动维护了这两个不同 ID 的 Term 之间的“互为翻译”关联关系。
正因如此,WordPress 原生的文章计数逻辑天然就是按语言隔离的。 中文 “bsc”(Term ID: A)的 $tag->count 只计算归属中文站点的文章,英文 “bsc”(Term ID: B)的 $tag->count 也只计算归属英文站点的文章,两者互不干扰。这也是为什么我们上述简短的代码无需做特殊的语言判断,就能精准按语言维度进行控流的核心原因。
三、 缓存清理:确保代码生效
代码修改完成后,由于站点启用了 W3 Total Cache 插件,前端页面存在静态缓存,必须彻底清空缓存才能让新注入的 meta 标签在前端源代码中体现。

(如上图所示,点击“清空所有缓存”,确保修改即时生效)
四、 实战测试:中英双语标签页源码验证
为了验证代码在 Polylang 环境下的精准度,我选取了两组标签进行测试:“bsc”标签(1篇文章) 和 “鼠标”标签(2篇文章),并分别在中文和英文路径下查看了网页源代码。
1. 单篇文章的薄内容标签(预期:有 noindex)
中文路径测试 (/tag/bsc/):
在网页源代码中,成功匹配到了我们注入的 meta 标签,说明单篇中文标签页逻辑生效。

英文路径测试 (/en/tag/bsc/):
由于 Polylang 按语言独立计数,英文标签下同样只归属了 1 篇文章,因此英文页面的源代码中也成功输出了 noindex 标签。

2. 两篇文章的达标标签(预期:无 noindex)
中文路径测试 (/tag/鼠标/):
该标签下有 2 篇文章,达到了我们的索引门槛。查看源代码,头部并没有出现 name="googlebot" 的 noindex 标签,仅有 WordPress 默认的 max-image-preview:large。

英文路径测试 (/en/tag/鼠标/):
同样,英文版该标签下也包含了 2 篇文章,源代码中同样没有拦截索引的标签,允许搜索引擎正常索引。

五、 测试结论
经过验证,本次代码部署完美达成了预期目标:
- ✅
https://www.shuijingwanwq.com/tag/bsc/(1篇文章) – 有name="googlebot" - ✅
https://www.shuijingwanwq.com/tag/鼠标/(2篇文章) – 无name="googlebot" - ✅
https://www.shuijingwanwq.com/en/tag/bsc/(1篇文章) – 有name="googlebot" - ✅
https://www.shuijingwanwq.com/en/tag/鼠标/(2篇文章) – 无name="googlebot"
关于已被索引页面的影响: 对于那些只有 1 篇文章且已被 Google 收录的标签页,添加此标签后,Googlebot 在下次抓取时读取到 noindex 指令,会将其从索引库中移除。这正是我们期望的“排毒”过程。同时,由于我们声明了 follow,页面上的链接权重依然可以正常传递给那唯一的一篇文章,实现了真正的低成本高收益。