目录分页第 2 页到第 9 页,浏览器标签上的标题都是商品目录 - 某某商城,只有 URL 里的 page 不同,一下收录了八个几乎一样的页面。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,主题用 wp_title 过滤器改标题时只判断了 is_archive,没处理 paged 参数。分页请求仍然走同一个模板,页码在标题函数里被丢掉了。
碰到「目录分页标题重复」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。改完顺手把文档补一句,省得下次自己重新推一遍。
$paged = max(1, get_query_var('paged'));
if (is_post_type_archive('product') && $paged > 1) {
$title .= sprintf(' - 第 %d 页', $paged);
}
监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
具体做法是,标题过滤器里读 get_query_var('paged'),大于 1 时拼上第 N 页;分页页的 canonical 指向当前页,别全都指第一页;改完逐页看源码里的 title 标签,别只看后台预览。
最后用这个标准收尾,第 2 页和第 3 页的 title 各带自己的页码,canonical 指向当前页而不是第一页。
