注册了 news 文章类型,后台能正常发文章,前台点进去全是 404,首页和其他页面都没问题。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,注册时没有设置 has_archive 与 rewrite,或者规则虽然写进了代码但没有刷新重写规则,缓存里根本没有这条路径。
碰到「自定义文章类型 404」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
register_post_type('news', [
'has_archive' => true,
'rewrite' => ['slug' => 'news'],
]);
flush_rewrite_rules();
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
具体做法是,确认 register_post_type 里 rewrite 的 slug 值;到设置里的固定链接页保存一次触发规则刷新;还不行就在初始化后调用一次刷新重写规则的函数。
最后用这个标准收尾,单篇文章页和归档页都能打开,翻页链接也指向正确地址。
