WordPress 标签体系:标签云、标签页与中文标签
标签页是 WordPress 里最容易变成垃圾页的地方。新建站点时随手打几个标签,两三年后后台躺着八百个标签,其中六百个只有一篇文章,四百个是拼写变体。这些页面全部返回 200,全部进 sitemap,爬虫爬一遍发现都是重复列表,整站的质量评分被一起拖下去。
标签什么时候该用
先把分工定死:分类管「这是什么栏目」,标签管「这篇讲了哪些词」。一篇文章一个分类、多个标签,这个组合不会错。反过来做,把栏目塞进标签、把关键词塞进分类,目录结构一定会在半年内失控。
建标签的门槛建议写成明文规则:这个词预计能聚起 5 篇以上文章才建,否则先当正文里的关键词处理,等第三篇出现时再建。这一条能挡掉八成垃圾标签,因为它把「当下方便」换成了「长期有用」。
典型该建标签的场景:
- 横切多个分类的技术词,比如 Nginx、Redis、WooCommerce
- 系列文章的共用标记,比如建站流程、排错手册
- 读者会主动搜索的产品名或版本号
不该建的:一次性的形容词、文章标题的碎片、与分类名重复的词(已经有「安全加固」分类,就别再建「安全加固」标签),以及「教程」「分享」这类什么都沾的万能词。
标签页的重复内容问题
标签页本质上是一个文章列表,标题、摘要、缩略图与首页、分类页、日期归档页高度重复。文章只有两三篇时,重复度接近百分之百,这种页面被收录对站点没有好处。
处理办法按标签质量分层,别一刀切全站 noindex,那样会连真正有价值的专题页一起废掉:
| 标签状态 | 建议处理 | robots |
|---|---|---|
| 10 篇以上,有明确搜索需求 | 保留,写标签描述,进 sitemap | index, follow |
| 3 到 10 篇 | 保留但不进 sitemap | noindex, follow |
| 1 到 2 篇 | 合并到相近标签,或保留观察 | noindex, follow |
| 0 篇 | 直接删除 | 不需要处理 |
实现上,Yoast 和 Rank Math 都在分类法设置里给了标签页的索引开关,关掉就是全站 noindex。需要按文章数区分时用代码判断:
add_filter( 'wp_robots', function( $robots ) {
if ( is_tag() ) {
$term = get_queried_object();
if ( $term instanceof WP_Term && $term->count < 3 ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
}
return $robots;
} );
wp_robots 是 5.7 之后的标准钩子,比老式的 wp_head 里 echo meta 干净,也不会和 SEO 插件打架。顺带记得把标签页从 sitemap 里排除,noindex 的地址同时出现在 sitemap 里是自相矛盾的信号,搜索引擎会降低对整份 sitemap 的信任。
另外,标签页不要开分页索引。标签下的文章一旦超过每页条数,第二页开始全是重复列表,统一 noindex 掉即可。
标签云:核心函数够用,插件看需求
WordPress 自带 wp_tag_cloud(),主题里一行就能输出:
wp_tag_cloud( array(
'smallest' => 12,
'largest' => 20,
'unit' => 'px',
'number' => 30,
'orderby' => 'count',
'order' => 'DESC',
'exclude' => '1,2',
) );
关键参数是 number 和 orderby。默认是取 45 个按名称排序,出来一堆生僻词;改成按 count 倒序取前 30,展示的才是真正有内容的标签。smallest 和 largest 控制字号区间,差距别超过 8px,否则视觉上会很乱。
什么时候需要插件?三种情况:要按颜色区分权重、要和侧边栏筛选联动、要给标签配图标。这类插件大多也是包装 wp_tag_cloud 再加 filter,和自定义主题样式容易打架,装之前先确认它能关掉自带 CSS。轻量站点直接用函数加几行样式就够,不值得为一个标签云装一个两百 KB 的插件。
还有个细节:标签云的链接是标签页,如果标签页本身 noindex,那标签云的作用就只剩「给读者找内容」。这时候可以考虑用标签云触发搜索页(?s=标签名),或者把它做成纯前端筛选,不产生可索引的新地址。
中文标签的别名编码
中文标签最容易踩的坑在别名(slug)。后台建标签时如果留空别名,WordPress 会把中文标题做 urlencode,生成这样的地址:
/tag/%e5%ae%89%e5%85%a8%e5%8a%a0%e5%9b%ba/
地址能访问,但复制出来又长又乱,微信里分享经常被截断,日志分析时也很难读。更要紧的是,一旦以后想改,旧地址就会 404。
建议所有中文标签手动填英文或拼音别名,比如「安全加固」填 anquan-jiagu。已经建好的批量补:
wp term list post_tag --fields=term_id,name,slug --format=csv > tags.csv
wp term update post_tag 128 --slug=anquan-jiagu
改别名的同时要把旧地址 301 过去,否则之前被收录的页面会掉:
RewriteRule ^tag/%e5%ae%89%e5%85%a8%e5%8a%a0%e5%9b%ba/?$ /tag/anquan-jiagu/ [R=301,L]
另一种做法是干脆不暴露标签页,用插件把 tag 前缀改成别的词,或者在主题里把标签链接指向搜索页。这属于「眼不见为净」,从收录角度不算优解,但对只有几十篇文章的小站够用,至少不会让一堆编码地址流出去。
标签数量失控的治理
治理分四步,顺序不能反:先删空标签,再合并同义,然后统一命名规则,最后加新建限制。顺序反了会做无用功,比如先合并再删,等于白合并一遍。
删空标签:
wp term list post_tag --format=ids | while read id; do
c=$(wp term get post_tag $id --field=count)
[ "$c" = "0" ] && wp term delete post_tag $id
done
合并同义标签要先把文章迁过去。后台没有标签合并按钮,只能走数据层:
INSERT OR IGNORE INTO wp_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT object_id, 302, term_order FROM wp_term_relationships WHERE term_taxonomy_id = 301;
DELETE FROM wp_term_relationships WHERE term_taxonomy_id = 301;
删完更新计数:wp term recount post_tag。计数不准会导致前台标签云把空标签也显示出来,看起来像还有内容。
统一命名规则是防复发的一步。约定清楚全小写、用连字符不用空格、单复数只取一种、不做中英混写(要么全用中文名,要么统一英文名)。规则写进编辑手册,比事后清理省力得多。
加限制是在编辑界面就挡住乱建。最省事的做法是把自由输入框换成勾选式,非管理员只能从已有标签里选:
add_filter( 'pre_insert_term', function( $term, $taxonomy ) {
if ( 'post_tag' === $taxonomy && ! current_user_can( 'manage_categories' ) ) {
return new WP_Error( 'no_new_tag', '请在已有标签中选择,不要新建。' );
}
return $term;
}, 10, 2 );
这个钩子对投稿者、作者立即生效,管理员仍然可以建新标签,多人投稿的站点用它能明显止住标签膨胀。
tag 页模板怎么改
模板层级是 tag-{slug}.php → tag-{id}.php → tag.php → archive.php → index.php。想给重点标签做专门落地页,直接建 tag-anquan-jiagu.php,改完不影响其他标签页。
通用改法是在 tag.php 里补三样东西:标签描述、文章数、相关标签。描述用 term_description() 输出,前提是后台填了内容——多数站点这里是空的,等于浪费了标签页唯一能写正文的位置。相关标签可以用「同分类下最常一起出现的标签」来算,简单点就用 wp_tag_cloud 排除当前标签。
再建议在列表上方加一句人话,说明这个标签收录什么、为什么值得看。纯列表对读者没有信息量,一句话能把跳出率压下来,也能让页面和分类页产生差异,降低重复度。
模板改动放在子主题里做,避免主题更新被覆盖,具体做法见 主题定制。标签页的排序也值得调,默认按发布时间倒序,对专题型标签改成按自定义字段或评论数排序更合理。
最后一句判断:标签页的价值在「聚合」和「发现」,不在「收录」。指望几千个标签页带流量不现实,把 20 个高频标签做成真正的专题页,比铺 2000 个自动生成的标签页有用得多。分类和标签是一套设计里的两半,规划顺序、命名规范、清理流程最好一起定,后台的操作入口和字段说明可以在 后台入门 里对照着熟悉一遍,整体收录策略见 SEO 优化,改完再顺着 全站目录 检查有没有残留的空标签页。