把旧文章删到回收站,再建一篇同名的新文章,别名还是被加成 -2。回收站清空之后又试了一次,仍然带后缀。乍看像缓存或者权限的锅,追下去往往不是。
SELECT ID, post_name, post_status FROM wp_posts WHERE post_name LIKE 'guide%'; DELETE FROM wp_postmeta WHERE post_id = 721 AND meta_key = '_wp_desired_post_slug';
追下去是这么回事:回收站里的记录并没有真的从 wp_posts 移走,post_name 还挂在原处。清空后对象缓存里可能仍留着旧别名映射,新文章查重时照样会避开它。
「回收站占用 slug」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
具体做法是,先查同前缀的 post_name,把回收站里那一条找出来彻底删除;删完清一次对象缓存和别名缓存,再新建文章看别名;确实要保留旧地址的,就手动把干净别名留给新文章,旧文加 301。
验收就看一点,新建的同名文章拿到不带后缀的别名,旧地址按 301 跳到新文章。
