add_action('parse_query', function($q){
if (!$q->is_feed || !function_exists('pll_current_language')) return;
$q->set('lang', pll_current_language() ?: 'zh');
});
英文版页面底部的 RSS 图标点开,feed 里全是中文标题,换到法语版还是一样,网页版切换语言却是正常的。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,feed 请求没有带语言上下文,查询落到默认语言上。多语言插件只在前台模板里切语言,feed 走的是另一条初始化路径。语言前缀在 feed 地址里被丢掉了。
这次卡住的地方就在「多语言 feed」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
处理上按这个顺序:确认各语言的 feed 地址是否带前缀,例如 /en/feed/,不带就补一条重写规则;在 feed 初始化时按当前语言设置查询条件,别用默认语言;每种语言单独作为订阅源,混在一起阅读器无法区分。
改完只确认一件事:英文版 feed 输出英文标题,中文版仍是中文,两种语言互不混入。
