「WordPress」- REST API Handbook

  CREATED BY JENKINSBOT

通过 REST API 可以操作 WordPress 站点,比如文章变更、分类设置等等功能。

在旧版本(不记得什么时候了)的 WordPress 中并没有内置 REST API,貌似需要单独安装。在新版本(也不知道哪个版本开始)的 WordPress 中已经内置了 REST API,可以直接使用。目前我们使用的是 4.9 版本,所以这里是基于 WordPress 4.9 版本进行介绍。

官方手册:REST API Handbook

第一步、添加 NGINX 重写

接口地址通常是http://demo.wp-api.org/wp-json/wp/v2的形式,而wp-json/并非目录,需要配置 Nginx 重写:

location / {
	try_files $uri $uri/ /index.php?$args;
}

来传递给index.php处理。

修改配置且重启 Nginx 后,可以访问http://demo.wp-api.org/wp-json/wp/v2以验证是否配置成功。

第二步、安装认证插件并配置

如果没有认证插件,只能进行查询,不能进行增删改。可用的认证插件可以参考「Authentication」手册,我们目前采用的认证插件是「Application Passwords」,详细的使用方法请仔细阅读插件描述。

第三步、修改文章测试

上述配置完成后,即可访问REST API来测试文章的创建:

#!/bin/sh

curl --header "Authorization: Basic YCRtuW46cGBzc3DvcmQ=" \
    -X POST \
    -d "title=New Title" \
    http://demo.wp-api.org/wp-json/wp/v2/posts

上述命令将创建标题为“New Title”的文章;

(1)Authorization: Basic YWRtaW46cGFzc3dvcmQ=表示使用了基础认证,建议使用 curl 推荐的传参方式。
(2)YWRtaW46cGFzc3dvcmQ=是认证信息,使用echo -n "admin:password" | base64命令生成;
(3)注意事项,命令echo -n "admin:password"中,amdin是登录管理后台的帐号,不是创建认证口令时的命名,这点插件描述中已经注明;password不是登录管理后台的admin密码,而是在「Application Passwords」认证插件中创建的口令;

相关文档

文章、分类、评论等等的接口地址参考「Reference」手册。

REST API Handbook / Reference / Categories
REST API Handbook / Reference / Posts

附加说明

不要用 SHELL 脚本来实现文章的导入

最初版本我使用了Shell实现了导入程序,但是,太慢了,也进行了优化,最后才发现瓶颈在于Shell中的for循环内部的关联数组赋值,当数据量比较大的时候,for循环的内部关联数组操作特别慢。后来换Python重写了,嗯,特别块。所以,我觉得:以后但凡涉及到大量的数据处理或者业务功能方面的东西,不再使用Shell脚本处理。而只用Shell处理系统维护管理性的任务。

参考文献

WP REST API
REST API Handbook
REST API – Create, Update or Delete posts using Basic Auth and HTTP API