sitemap 的 lastmod 停在三天前,新发的 12 篇文章一条没进去,后台手动点重新生成才更新,看 wp-cron.php 的访问日志三天零请求。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,站点的 DISABLE_WP_CRON 被设成 true,又没有配系统任务去调 wp-cron.php,定时任务全靠访客触发。低流量站点没人访问,任务就一直排队。
「sitemap 定时更新失败」这类改动最怕改一半,回滚脚本先准备好,再动生产。报错里带路径的,先去看那个路径在不在、权限对不对。
wp cron event list wp cron event run wp_update_sitemap # crontab 每 5 分钟 */5 * * * * curl -s https://example.com/wp-cron.php?doing_cron > /dev/null
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
具体做法是,先确认 wp-config.php 里 DISABLE_WP_CRON 的值;在服务器加一条每五分钟执行 wp-cron.php 的系统任务;手动跑一次生成,看 sitemap 的 lastmod 是否更新。
最后用这个标准收尾,发一篇新文章,五分钟内 sitemap 里出现该 URL,lastmod 是当天。
