在此前的文章 WordPress JSON REST API (WP API) 简介、发展前景及文档翻译计划中,我简单的介绍了 WordPress JSON REST API,然后在百度统计中看到了很多朋友搜索到了这篇文章,文章中也有提到翻译 WordPress JSON REST API 文档的计划 ,这将是翻译计划的第一篇,使用 WordPress JSON REST API 创建\获取\编辑\删除文章。
创建一篇文章
POST /posts
需要认证
输入
传入的 data 参数被用来创建 POST 对象,数据可以用 HTTP multipart body 的形式提交,也可以直接使用 JOSN 格式。所以,下面的两种方式是等效的。
Content-Type: application/x-www-form-urlencoded
data[title]=Hello%20World!&data[content_raw]=Content&data[excerpt_raw]=Excerpt
Content-Type: application/json
{”title”:”Hello World!”,”content_raw”:”Content”,”excerpt_raw”:”Excerpt”}
data 参数应该是一个包含以下键值对的对象。
title
– 文章标题 (string) required
content_raw
– 文章内容 (string) required
excerpt_raw
– 文章摘要 (string) optional
name
– 文章别名 (string) optional
status
– 文章状态,可以是: draft, publish, pending, future, private, 或其他自定义文章状态,如果提供的文章状态为 future,必须同时提交一个日期作为文章的发布日期,默认为draft. (string) optional
type
– 文章类型,可以是: post, page, link, nav_menu_item, 或其他自定义文章类型. 默认为post. (string) optional
date
– 发布文章的本地日期和时间. 日期应该是一个 RFC3339 时间戳(http://tools.ietf.org/html/rfc3339). 例如: 2014-01-01T12:20:52Z. 默认为本地日期和时间. (string) optional
date_gmt
– 文章发布的UTC日期和时间,日期应该为一个 RFC3339 时间戳. 例如: 201401-01T12:20:52Z. 默认为当前的 GMT 日期和时间. (string) optional
author
– 文章的作者,作者可以为作者ID或作者对象,默认为当前作者。(object | string) optional
password
– 用来保护文章的密码,默认为空字符串 (string) optional
post_parent
– 父级文章的ID,默认为0. (integer) optional
post_format
– 文章格式,默认为standard. (string) optional
menu_order
– 页面的顺序序号,默认为0 (integer) optional
comment_status
– 文章的评论状态:open or closed. 用以确定用户是否可以发表评论,默认为设置选项 ‘default_comment_status’的值, 或 ‘closed’. (string) optional
ping_status
– 文章的ping状态: open or closed。用来确定用户是否可以提交pibgbacks和trackbacks,默认为设置选项 ‘default_ping_status’的值. (string) optional
sticky
– 文章的置顶状态: true or false. 默认为 false. (boolean) optional
post_meta
– 文章的元数据,文章元数据应该是一个或多个元数据对象的数组,查看使用端点键值对创建文章元数据章节。 (array) optional
返回
如果文章创建成功,会返回一个201状态码,说明文章已经被创建,从地址头可以看到文章的 URL 信息,为方便使用,文章的主要内容也会在返回的 HTTP body 中显示。
如果没有授权,将返回一个403 未授权状态码。
获取文章
文章端点返回一个包含了站点文章的一个子集。
GET /posts
输入
filtration
filter
参数控制用于文章查询的参数。
Attention:只有 “公开” 查询参数可以通过 API 使用,因为不是所有的查询参数可以安全的暴露出来。只有具有 edit_posts 权限的授权用户才能使用 “私有” 查询参数。其他查询参数可以通过query_vars
过滤器注册,或通过json_query_vars
注册API专用查询参数。
更多可用查询参数请参考 WordPress 官方文档,下面是可以在 API 中使用的查询参数:
- m
- p
- posts
- w
- cat
- withcomments
- withoutcomments
- s
- search
- exact
- sentence
- calendar
- page
- paged
- more
- tb
- pb
- author
- order
- orderby
- year
- monthnum
- day
- hour
- minute
- second
- name
- category_name
- tag
- feed
- author_name
- static
- pagename
- page_id
- error
- comments_popup
- attachment
- attachment_id
- subpost
- subpost_id
- preview
- robots
- taxonomy
- term
- cpage
- post_type
- posts_per_page
如果用户已经获得了授权,下面的私有查询参数,可以在发表和编辑文章时使用:
- offset
- posts_per_archive_page
- showposts
- nopaging
- post_type
- post_status
- category__in
- category__not_in
- category__and
- tag__in
- tag__not_in
- tag__and
- tag_slug__in
- tag_slug__and
- tag_id
- post_mime_type
- perm
- comments_per_page
- post__in
- post__not_in
- post_parent
- post_parent__in
- post_parent__not_in
GET /posts?filter[posts_per_page]=8&filter[order]=ASC
上下文
context 参数控制返回的数据类型,具体查看获取文章端点的可用上下文。
默认为 “view”. (string)
类型
type 参数指定获取文章的文章类型,可以是一个字符串或一个文章类型的数组。
注意数组需要使用 [] URL 语法定义 ,例如:
GET /posts?type[]=post&type[]=page
默认为 “post” (string)
返回
如果请求的文章存在,将返回包含所请求文章的一个集合。
获取一篇文章
GET /posts/
输入
context
上下文参数控制数据返回的格式。可用的上下文参数有:
view:
默认上下文,输出普通的用户内容。
edit:
更新文章时用来添加附加字段,包括 title_raw
, content_raw
, guid_raw
和自定义字段, 以适应文章编辑。
parent:
上下文在嵌入另一个(如文章作者)的返回时使用。这样做是为了使用用户数据的最小子集来减少响应大小。返回父字段作为一个 ID,而不是一个嵌入的文章,以确保我们不会遍历后面的整个层次结构。
返回
如果请求的文章存在,将返回请求文章内容,返回的字段根据 context 参数所定。
编辑文章
PUT /posts/
需要授权
出于兼容性考虑,这个端点同时接受 POST 和 PATCH 方法。因为都使用 PUT 方法,这两种方法都有相同的行为。建议使用 PUT(如果可用),以适应 REST 约定。
输入
数据参数包括需要修改的文章 ID 和文章对象。数据可以用 HTTP multipart body 的形式提交,也可以直接用 JOSN 格式。请参阅创建文章端点的例子。
和发布文章一样,data 参数应该是一个包含以下键值对的对象,唯一不一样的就是编辑文章的参数中多了一个文章 ID,编辑文章的数据参数和发布文章是一样的,这里就不再一一翻译了,请参照编辑文章的键值字符串部分。
返回
如果文章创建成功,会返回一个 201 状态码,说明文章已经被更新,从地址头可以看到文章的 URL 信息,为方便使用,文章的主要内容也会在返回的主题中显示。
删除文章
DELETE /posts/
需要授权
输入
FORCE
force参数控制删除操作是移动到回收站或永久删除,默认为 false,指定文章被移动到回收站,如果设置为 true,文章将被永久删除。
默认为 false. (boolean)
返回
如果删除成功,会返回一个 202 已接受状态码,说明文章已经被移动到回收站,稍后可以永久删除。如果请求中设置了 force 选项,将返回一个 200 OK 状态码,说明文章已经被永久删除。
如果发出请求的客户端未授权,返回一个 403 错误码。
获取文章版本
GET /posts//revisions
需要授权
返回
如果请求成功,返回一个 200 OK 状态码和指定文章的版本。
如果发出请求的客户端未授权,返回一个 403 错误码。
以上就是 WordPress JSON REST API (WP API) 文档关于 WordPress post 部分的中文文档,因为英文水平有限,翻译中难免有错误或者不恰当的地方,欢迎在评论中提出。
9 thoughts on “WordPress JSON REST API (WP API) 使用文档-创建\获取\编辑\删除文章”
缺少categories和tags的api
wordpress官网也有api,比较完整
https://developer.wordpress.com/docs/api/
通过wordpress.com调用api,需要OAuth2认证,挺麻烦
但是 WP API 是博客本身输出,可靠稳定。
你这个应该是WordPress.com的,自己托管的WordPress网站是用不了的吧?
好像要安装jetpack插件http://jetpack.me/support/json-api/
https://developer.wordpress.com/docs/api/console/
在console测试可以用
但不知道如何用代码调用api
调用API的方法这篇文章里面有介绍,可以看一下,https://www.wpzhiku.com/get-json-content-var-wordpress-http-api/
请教博主,上文可通过GET POST获取文章的集合,他返回的数据包含太多东西。在app开发中,例如文章内容,不需要完全载入的。有没有什么参数只返回标题,缩略图,ID,简介呢。我也看了英文的文档,提到的filter的可选参数也没有作出解析,什么参数对应什么作用。
filter是用来过来过滤需要返回的文章的,相当于查询参数。返回的结果是文章对象,是包含这些或这个文章的所有内容,这个貌似是没办法过滤的。
那有没有其他解决方案呢。还是只能自己写代码。
目前只有自己写了,不过自己写一个貌似也不怎么麻烦。
今天发现了一个filter:
json_prepare_post
,貌似可以实现你要的功能,有空测试一下,改天发文详细说明。