add_action('pre_get_posts', function($q){
if (is_admin() || $q->is_feed) return;
if ($q->is_category) $q->set('posts_per_page', 12);
});
打开分类归档的 feed,二十条里有七条属于另一个分类,网页版分类页却是干净的,只有 feed 会混。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,主题在 pre_get_posts 里改查询时用 is_category 判断,feed 请求下这个条件也会成立,后续逻辑又把分类条件重置了。分类别名与另一个分类前缀相同时,匹配规则也会放宽。
「分类 feed 混入」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
处理上按这个顺序:在 pre_get_posts 里先判 is_feed,feed 请求不要走前台的查询改写;打印查询对象的分类条件,确认分类参数是否真的带上了;分类别名避免用另一个分类的前缀,重名会让匹配落到两条规则上。
改完只确认一件事:分类 feed 里每条文章都属于该分类,条数和网页版一致。
