把一篇已发布文章改回草稿,后台状态已经是 draft,前台链接照样能打开,状态码 200,无痕窗口和手机上都一样,清浏览器缓存也没用。乍看像缓存或者权限的锅,追下去往往不是。

curl -sI 'https://example.com/2026/11/hello/' | findstr /i "HTTP/ cache-control x-cache"
wp cache flush

追下去是这么回事:整页缓存按 URL 存了一份 HTML,改状态时没有触发对应 URL 的清除。缓存层不认识 post_status,只要键还在就直接返回旧页面。

「撤回发布缓存」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。

线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

具体做法是,改状态后立刻按 URL 清一次页面缓存和 CDN;在状态转换钩子里统一挂清除逻辑,别靠人工点;给草稿和私密文章加 Cache-Control: no-store;用 curl -I 确认响应头里没有命中缓存的标记。

验收就看一点,前台链接返回 404 或跳登录页,响应头里 x-cache 显示 MISS。

作者 9823189