遍历子站取最新文章,第一站正常,后面几个站点输出的还是第一个站的内容,标题反复出现。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,切换站点改变了全局的站点上下文,循环里没有恢复原站点,后面的查询和选项读取就都还在上一个站点上执行。

「switch_to_blog 串站」这类改动最怕改一半,回滚脚本先准备好,再动生产。报错里带路径的,先去看那个路径在不在、权限对不对。

foreach ($sites as $id) {
  switch_to_blog($id);
  echo get_bloginfo('name');
  restore_current_blog();
}

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

具体做法是,每次 switch 之后都成对调用一次恢复函数;把恢复放在循环末尾,异常分支里也要调用;打印当前站点编号确认上下文已经切回来。

最后用这个标准收尾,每个子站都输出各自的站名和文章,不再出现重复内容。

作者 9823189