前端提交工单拿到 201 和工单号,后台工单列表一条都没有,直接在数据库里 select 却能查到这条记录。乍看像缓存或者权限的锅,追下去往往不是。

SELECT ID, post_type, post_status, post_date
FROM wp_posts
WHERE post_type = 'ticket'
ORDER BY ID DESC LIMIT 5;

追下去是这么回事:插入时 post_status 写成了 pending,后台列表的查询只认 publish,状态对不上就被过滤掉。自定义文章类型的默认状态如果没在注册时声明,很容易被随手写成 pending。

「工单 post_status pending」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

具体做法是,先按 ID 查一次库,把 post_status 打出来,确认记录到底在不在;后台列表的状态参数加上 pending 和 private,别只留 publish;提交入口统一把状态写成 publish 或者自定义的 open,别混用内置状态。

验收就看一点,重新提交一条,后台列表第一行就是它,状态列显示为打开。

作者 9823189