新建页面后加进主菜单,后台显示顺序正常,前台刷新还是旧菜单。清掉缓存插件的缓存立刻出现,过一天又遇到同样情况。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
add_action('wp_update_nav_menu', function () {
if (function_exists('rocket_clean_domain')) { rocket_clean_domain(); }
});
页面缓存把整页 HTML 存成静态文件,菜单是页面的一部分,跟着一起被缓存。菜单更新没有触发对应 URL 的缓存失效,过期时间又设得很长。这一点先确认清楚,后面就不用反复试。
「菜单 HTML 缓存」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
具体做法是,在 wp_update_nav_menu 钩子里清整站缓存;给页面缓存设置随菜单版本号变化的键;用登录状态访问一次 确认到底是缓存还是菜单本身。
改完照着核一遍,保存菜单后前台立即出现新项,退出登录再刷新也不会回退。
