REST API 文档

💡 云策文档标注

概述

本文档详细介绍了 WordPress REST API 中关于文章(Posts)的端点操作,包括文章的数据结构(Schema)、列表查询、创建、检索、更新和删除功能。面向开发者,提供了完整的字段定义和 API 参数说明。

关键要点

  • 文章 Schema 定义了核心字段如 id、title、content、date、status 等,每个字段包含 JSON 数据类型、上下文(view/edit/embed)和可选值范围。
  • 支持通过 GET /wp/v2/posts 查询文章列表,可使用 context、page、per_page、search、author、orderby 等多种参数进行过滤和排序。
  • 提供创建(POST /wp/v2/posts)、检索(GET /wp/v2/posts/<id>)、更新(POST /wp/v2/posts/<id>)和删除(DELETE /wp/v2/posts/<id>)文章的端点,每个操作都有相应的参数和示例请求。
  • 文章字段包括基础属性(如 slug、password)、内容相关(如 excerpt、featured_media)、状态设置(如 comment_status、ping_status)和分类关联(如 categories、tags)。
  • API 参数如 context 控制响应字段范围,force 用于强制删除文章,确保开发者能灵活操作文章数据。

代码示例

// 查询文章列表
$ curl https://example.com/wp-json/wp/v2/posts

// 创建文章
$ curl -X POST https://example.com/wp-json/wp/v2/posts -d '{"title":"New Post"}'

// 更新文章
$ curl -X POST https://example.com/wp-json/wp/v2/posts/<id> -d '{"title":"My New Title"}'

// 删除文章
$ curl -X DELETE https://example.com/wp-json/wp/v2/posts/<id>

📄 原文内容

Schema

The schema defines all the fields that exist within a post record. Any response from these endpoints can be expected to contain the fields below unless the `_filter` query parameter is used or the schema field only appears in a specific context.

date The date the post was published, in the site's timezone.

JSON data type: string or null,
Format: datetime (details)

Context: view, edit, embed

date_gmt The date the post was published, as GMT.

JSON data type: string or null,
Format: datetime (details)

Context: view, edit

guid The globally unique identifier for the post.

JSON data type: object

Read only

Context: view, edit

id Unique identifier for the post.

JSON data type: integer

Read only

Context: view, edit, embed

modified The date the post was last modified, in the site's timezone.

JSON data type: string,
Format: datetime (details)

Read only

Context: view, edit

modified_gmt The date the post was last modified, as GMT.

JSON data type: string,
Format: datetime (details)

Read only

Context: view, edit

slug An alphanumeric identifier for the post unique to its type.

JSON data type: string

Context: view, edit, embed

status A named status for the post.

JSON data type: string

Context: view, edit

One of: publish, future, draft, pending, private

type Type of post.

JSON data type: string

Read only

Context: view, edit, embed

password A password to protect access to the content and excerpt.

JSON data type: string

Context: edit

generated_slug Slug automatically generated from the post title.

JSON data type: string

Read only

Context: edit

title The title for the post.

JSON data type: object

Context: view, edit, embed

content The content for the post.

JSON data type: object

Context: view, edit

author The ID for the author of the post.

JSON data type: integer

Context: view, edit, embed

excerpt The excerpt for the post.

JSON data type: object

Context: view, edit, embed

comment_status Whether or not comments are open on the post.

JSON data type: string

Context: view, edit

One of: open, closed

ping_status Whether or not the post can be pinged.

JSON data type: string

Context: view, edit

One of: open, closed

format The format for the post.

JSON data type: string

Context: view, edit

One of: standard, aside, chat, gallery, link, image, quote, status, video, audio

meta Meta fields.

JSON data type: object

Context: view, edit

sticky Whether or not the post should be treated as sticky.

JSON data type: boolean

Context: view, edit

template The theme file to use to display the post.

JSON data type: string

Context: view, edit

categories The terms assigned to the post in the category taxonomy.

JSON data type: array

Context: view, edit

tags The terms assigned to the post in the post_tag taxonomy.

JSON data type: array

Context: view, edit

List Posts

Query this endpoint to retrieve a collection of posts. The response you receive can be controlled and filtered using the URL query parameters below.

Definition

GET /wp/v2/posts

Example Request

$ curl https://example.com/wp-json/wp/v2/posts

Arguments

context Scope under which the request is made; determines fields present in response.

Default: view

One of: view, embed, edit

page Current page of the collection.

Default: 1

per_page Maximum number of items to be returned in result set.

Default: 10

search Limit results to those matching a string.
after Limit response to posts published after a given ISO8601 compliant date.
modified_after Limit response to posts modified after a given ISO8601 compliant date.
author Limit result set to posts assigned to specific authors.
author_exclude Ensure result set excludes posts assigned to specific authors.
before Limit response to posts published before a given ISO8601 compliant date.
modified_before Limit response to posts modified before a given ISO8601 compliant date.
exclude Ensure result set excludes specific IDs.
include Limit result set to specific IDs.
offset Offset the result set by a specific number of items.
order Order sort attribute ascending or descending.

Default: desc

One of: asc, desc

orderby Sort collection by post attribute.

Default: date

One of: author, date, id, include, modified, parent, relevance, slug, include_slugs, title

search_columns Array of column names to be searched.
slug Limit result set to posts with one or more specific slugs.
status Limit result set to posts assigned one or more statuses.

Default: publish

tax_relation Limit result set based on relationship between multiple taxonomies.
One of: AND, OR
categories Limit result set to items with specific terms assigned in the categories taxonomy.
categories_exclude Limit result set to items except those with specific terms assigned in the categories taxonomy.
tags Limit result set to items with specific terms assigned in the tags taxonomy.
tags_exclude Limit result set to items except those with specific terms assigned in the tags taxonomy.
sticky Limit result set to items that are sticky.

Create a Post

Arguments

<a href="#schema-date">date</a> The date the post was published, in the site's timezone.
<a href="#schema-date_gmt">date_gmt</a> The date the post was published, as GMT.
<a href="#schema-slug">slug</a> An alphanumeric identifier for the post unique to its type.
<a href="#schema-status">status</a> A named status for the post.
One of: publish, future, draft, pending, private
<a href="#schema-password">password</a> A password to protect access to the content and excerpt.
<a href="#schema-title">title</a> The title for the post.
<a href="#schema-content">content</a> The content for the post.
<a href="#schema-author">author</a> The ID for the author of the post.
<a href="#schema-excerpt">excerpt</a> The excerpt for the post.
<a href="#schema-featured_media">featured_media</a> The ID of the featured media for the post.
<a href="#schema-comment_status">comment_status</a> Whether or not comments are open on the post.
One of: open, closed
<a href="#schema-ping_status">ping_status</a> Whether or not the post can be pinged.
One of: open, closed
<a href="#schema-format">format</a> The format for the post.
One of: standard, aside, chat, gallery, link, image, quote, status, video, audio
<a href="#schema-meta">meta</a> Meta fields.
<a href="#schema-sticky">sticky</a> Whether or not the post should be treated as sticky.
<a href="#schema-template">template</a> The theme file to use to display the post.
<a href="#schema-categories">categories</a> The terms assigned to the post in the category taxonomy.
<a href="#schema-tags">tags</a> The terms assigned to the post in the post_tag taxonomy.

Definition

POST /wp/v2/posts

Retrieve a Post

Definition & Example Request

GET /wp/v2/posts/<id>

Query this endpoint to retrieve a specific post record.

$ curl https://example.com/wp-json/wp/v2/posts/<id>

Arguments

id Unique identifier for the post.
context Scope under which the request is made; determines fields present in response.

Default: view

One of: view, embed, edit

password The password for the post if it is password protected.

Update a Post

Arguments

<a href="#schema-id">id</a> Unique identifier for the post.
<a href="#schema-date">date</a> The date the post was published, in the site's timezone.
<a href="#schema-date_gmt">date_gmt</a> The date the post was published, as GMT.
<a href="#schema-slug">slug</a> An alphanumeric identifier for the post unique to its type.
<a href="#schema-status">status</a> A named status for the post.
One of: publish, future, draft, pending, private
<a href="#schema-password">password</a> A password to protect access to the content and excerpt.
<a href="#schema-title">title</a> The title for the post.
<a href="#schema-content">content</a> The content for the post.
<a href="#schema-author">author</a> The ID for the author of the post.
<a href="#schema-excerpt">excerpt</a> The excerpt for the post.
<a href="#schema-featured_media">featured_media</a> The ID of the featured media for the post.
<a href="#schema-comment_status">comment_status</a> Whether or not comments are open on the post.
One of: open, closed
<a href="#schema-ping_status">ping_status</a> Whether or not the post can be pinged.
One of: open, closed
<a href="#schema-format">format</a> The format for the post.
One of: standard, aside, chat, gallery, link, image, quote, status, video, audio
<a href="#schema-meta">meta</a> Meta fields.
<a href="#schema-sticky">sticky</a> Whether or not the post should be treated as sticky.
<a href="#schema-template">template</a> The theme file to use to display the post.
<a href="#schema-categories">categories</a> The terms assigned to the post in the category taxonomy.
<a href="#schema-tags">tags</a> The terms assigned to the post in the post_tag taxonomy.

Definition

POST /wp/v2/posts/<id>

Example Request

$ curl -X POST https://example.com/wp-json/wp/v2/posts/<id> -d '{"title":"My New Title"}'<br />

Delete a Post

Arguments

id Unique identifier for the post.
force Whether to bypass Trash and force deletion.

Definition

DELETE /wp/v2/posts/<id>

Example Request

$ curl -X DELETE https://example.com/wp-json/wp/v2/posts/<id>