最后更新时间:2026-09-22 19:07:20
内容的 status 字段不是简单的「开 / 关」,它有五种取值:
| 值 | 含义 | 前台可见 |
|---|---|---|
1 | 启用(已发布) | 是 |
0 | 禁用 | 否 |
-1 | 待审核 | 否 |
2 | 草稿 | 否 |
-2 | 已删除 | 否 |
只有 1 会在前台展示。这是「后台能看到、前台看不到」类问题的第一排查点。
外部 API 和 MCP 写入时明明传了 status: 1,内容却变成了 -1 待审核。原因是敏感词检查:内容命中敏感词时,系统会把状态强制设为待审核,需要人工过一遍。
这不是接口 bug,是预期行为。批量导入内容时尤其容易遇到——导完发现前台一篇都没有,其实全在待审核队列里。
这是最容易出错的地方:同一个数字 0,在写入和筛选两个场景里含义相反。
| 场景 | status: 0 的含义 |
|---|---|
更新内容(update_article) | 不修改这个字段,保持原值 |
筛选列表(list_articles) | 不过滤状态,返回所有状态的内容 |
也就是说:想改状态时不能传 0,传了等于没改;想看全部内容时要传 0,不传则按其他默认处理。弄反了会出现「改了没生效」或「少了一堆内容」的错觉。
list_articles 核对时,记得传 status: 0 才能看到全部状态的条目,否则容易误判「导入失败」。id 建立本地映射,后续更新删除直接用 id,不用再查一次列表。留言和评论(互动数据)用的是另一套状态:1 通过、-1 待审核、2 拒绝。前台提交留言默认就是 -1 待审核,需要在后台审核后才会公开显示——如果留言一直不出现,先去审核列表看。