新建页面别名写成 guide,和已有分类 guide 撞上,访问这个地址打开的是页面,分类归档彻底进不去,后台也没有提示。乍看像缓存或者权限的锅,追下去往往不是。

add_filter("category_link", function ($url) {
    return str_replace("/category/", "/topic/", $url);
});

追下去是这么回事:页面和分类共用同一套重写规则,解析时页面优先,分类被挤掉。别名唯一性检查只在同一类型内部做,跨类型不报错。

「分类与页面冲突」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。

线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

具体做法是,给分类加统一前缀 避开页面别名;已经撞车的改其中一个别名 并做 301;改完保存固定链接 重建规则。

验收就看一点,页面地址打开页面,带前缀的地址打开分类归档,两边互不影响。

作者 9823189