打开分类的 feed 地址返回 500,日志里是未定义数组键 paged 的警告,同一分类的普通页面却完全正常。乍看像缓存或者权限的锅,追下去往往不是。

$paged = $wp_query->query_vars["paged"] ?? 1;
curl -sI https://example.com/category/frontend/feed/ | head -1

追下去是这么回事:feed 模板里直接读了查询对象的分页变量,feed 请求没有这个键,新版本 PHP 把警告升级成中断。自定义 feed 模板复制自页面模板,很容易带上这行。

「分类 feed 报错」这类改动最怕改一半,回滚脚本先准备好,再动生产。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。

监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

具体做法是,取值前用空合并运算符给默认值;feed 里不要复用页面分页逻辑;改完用 curl 看返回码和 XML 头部。

验收就看一点,feed 地址返回 200,XML 里能看到最近十篇文章。

作者 9823189