草稿与发布(Draft & Publish)
页面摘要: 草稿与发布将草稿与线上条目分离,使编辑者能够在发布前暂存内容。本文档展示了如何为每个内容类型启用它,以及如何管理发布或取消发布操作。
草稿与发布(Draft & Publish)功能允许你管理内容的草稿。
- Plan:免费功能
- Role & permission:无
- Activation:可用但默认禁用
- Environment:在开发与生产环境中均可用
配置
配置该功能的路径: 内容类型构建器(Content Type Builder)
为了让你的内容类型可以在内容管理器(Content Manager)中通过草稿与发布进行管理,必须通过内容类型构建器启用该功能。草稿与发布可以为每个内容类型单独配置。
- 编辑你选择的已创建内容类型,或创建一个新的内容类型(更多信息请参阅 内容类型构建器 文档)。
- 进入 Advanced settings(高级设置) 标签页。
- 勾选 Draft & Publish 选项。
- 点击 Finish(完成) 按钮。

当为内容类型启用草稿与发布时,属性名 status 由 Strapi 保留,不能用于用户定义的属性。内容类型构建器会阻止:
- 向已启用草稿与发布的内容类型添加名为
status的属性。 - 在已经拥有
status属性的内容类型上启用草稿与发布。
如果某个内容类型从 Strapi v4 项目继承了 status 属性,Strapi 5 会在启动时记录一条警告。在重新启用草稿与发布之前,请先重命名该属性,以避免 API 冲突。完整的操作步骤请参阅 迁移指南。
记录首次发布日期 (功能开关) {#recording-the-first-publication-date}
当启用此 future flag 时(请参阅 功能配置),Strapi 会自动为所有使用草稿与发布的内容类型添加一个 firstPublishedAt 属性。该属性保存条目首次发布的日期和时间,即使条目被取消发布并再次发布也绝不会改变。
:::caution
如果该功能开关之后被禁用,firstPublishedAt 属性及其存储的值将被移除。
:::
使用
启用草稿与发布后,内容管理器的编辑视图 会在界面顶部指示你的内容类型条目的当前状态。你的内容可以有以下 3 种状态:
Published(已发布) :内容之前已发布。没有待保存的草稿更改。
Modified(已修改) :内容之前已发布。你对草稿版本做了一些更改并保存了这些更改,但这些更改尚未发布。
Draft(草稿) :内容从未发布过。
当启用草稿与发布时,在 内容管理器 列表视图中,你可以使用 Filters(过滤器) 按钮按状态过滤条目。你也可以通过点击列表视图中的 Status(状态) 列标题,按发布状态对条目进行排序。
处理草稿
路径: 内容管理器,你的内容类型的编辑视图
在编辑文档时,你可以看到 2 个标签页:
- Draft(草稿) 标签页是你可以编辑内容的地方。
- Published(已发布) 标签页是一个只读标签页,其中所有字段的编辑都被禁用。Published(已发布) 标签页仅用于显示已发布版本中字段的内容。

默认情况下,每个新创建的内容都是草稿。草稿可以随意修改和保存,使用界面右侧 Entry(条目) 框中的 Save(保存) 按钮,直到它们准备好发布。
一旦你对草稿做了更改,你有以下 3 种可能选项,这些都可在界面右侧的 Entry(条目) 框中获得:
- Publish(发布) 你的文档(请参阅 发布草稿),
- Save(保存) 你的草稿以便日后取用,
- 或放弃更改,点击 并选择 Discard changes(放弃更改)。
发布草稿
路径: 内容管理器,你的内容类型的编辑视图
要发布草稿,请点击界面右侧 Entry(条目) 框中的 Publish(发布) 按钮。
草稿发布后:
- Draft(草稿) 和 Published(已发布) 标签页的内容应该完全一致(但 Published(已发布) 标签页仍然只读)。
- 文档标题下方的状态将切换为“Published(已发布)”。
:::caution 在发布草稿之前,请确保它与其他未发布的内容没有关系,否则部分内容可能无法通过 API 访问。 :::
当文档同时拥有草稿版本和已发布版本时,已发布版本可以在 Published(已发布) 标签页中找到。如果文档只有草稿版本,你无法点击 Published(已发布) 标签页。

要安排发布(即在给定日期和时间将草稿转换为已发布条目),你可以将其纳入一个 release(发布)并安排该 release 的发布。更多信息请参阅 Releases 功能 文档。
取消发布内容
路径: 内容管理器,你的内容类型的编辑视图
要取消发布之前已发布的内容:在 Draft(草稿) 标签页中,点击界面右侧 Entry(条目) 框中的 并选择 Unpublish(取消发布) 按钮。
如果文档的草稿版本包含与已发布版本不同的内容,你可以在取消发布时决定如何处理这两部分内容:
- 在 Draft(草稿) 标签页中,点击界面右侧 Entry(条目) 框中的 并选择 Unpublish(取消发布) 按钮。
- 在打开的确认对话框中,你可以选择:
- Unpublish and keep last draft(取消发布并保留最后的草稿),这样你在 Draft(草稿) 标签页中当前拥有的所有内容都会被保留,但 Published(已发布) 标签页中的所有内容将彻底消失
- Unpublish and replace last draft(取消发布并替换最后的草稿),丢弃 Draft(草稿) 标签页中的任何现有内容,并用 Published(已发布) 标签页中所有字段的内容替换它
- 点击 Confirm(确认)。所需的更改将应用到 Draft(草稿) 和 Published(已发布) 标签页,条目的新状态也会反映在条目标题下方。

批量操作
路径: 内容管理器,你的内容类型的列表视图
从 内容管理器的列表视图 中选择多个条目,会显示额外的按钮,用于同时发布或取消发布多个条目。这就是所谓的“批量发布/取消发布(bulk publishing/unpublishing)”。
:::caution 如果安装了 国际化功能,批量发布/取消发布操作仅适用于当前所选的语言区域。 :::

批量发布草稿
要同时发布多个条目:
- 从内容管理器的列表视图中,通过勾选条目记录左侧的框来选择要发布的条目。
- 点击表格表头上方位于的 Publish(发布) 按钮。
- 在 Publish entries(发布条目) 对话框中,检查所选条目的列表及其状态:
- Ready to publish(准备发布):该条目可以发布
- “[字段名] is required([字段名]为必填)”、“[字段名] is too short([字段名]过短)”或“[字段名] is too long([字段名]过长)”:该条目由于红色警告消息中所述的问题而无法发布。
- (可选)如果你的某些条目具有 状态,请点击 编辑按钮修复问题,直到所有条目都达到 Ready to publish(准备发布)状态。请注意,当你修复各个条目的问题时,需要点击 Refresh(刷新) 按钮来更新 Publish entries(发布条目) 对话框。
- 点击 Publish(发布) 按钮。
- 在确认对话框中,再次点击 Publish(发布) 按钮确认你的选择。
批量取消发布内容
要同时取消发布多个条目:
- 从内容管理器的列表视图中,通过勾选条目记录左侧的框来选择要取消发布的条目。
- 点击表格表头上方位于的 Unpublish(取消发布) 按钮。
- 在确认对话框中,再次点击 Unpublish(取消发布) 按钮确认你的选择。
与 API 配合使用
可以使用 status 参数通过 Strapi 的 Content API 提供的各种前端 API 来请求、创建、更新和删除草稿或已发布的内容。要按文档的草稿版本和已发布版本之间的关系(例如从未发布或已修改的文档)进行查询,请使用 publicationFilter 参数(REST 和 GraphQL),或使用等价的文档服务(Document Service)API 选项。
- REST API — 了解如何将 status 参数与 REST API 配合使用。
- REST API:publicationFilter — 查询从未发布、已修改以及其他与发布相关的文档分组。
- GraphQL API — 了解如何将 status 参数与 GraphQL API 配合使用。
- GraphQL API:publicationFilter — 使用 PublicationFilter 枚举查询从未发布、已修改等文档。
在 Strapi 的后端服务器上,文档服务(Document Service)API 也可以查询和管理草稿与已发布的内容:
- Document Service API — 了解如何将 status 参数与文档服务 API 配合使用。
- Document Service API:publicationFilter — 从服务端代码查询从未发布、已修改等文档。