该笔记将记录:在 WordPress 中,如何通过 REST API 进行文档操作,以及常见问题解决办法。
认识
文档:https://developer.wordpress.org/rest-api/
我们这里主要关注 REST API,通过 REST API 能够操作 WordPress 站点,比如文章变更、分类设置等等。
性质
文章、分类、评论等等的接口地址参考「Reference」手册。
REST API Handbook / Reference / Categories
REST API Handbook / Reference / Posts
提供文章搜索接口 Search API
该笔记将记录:在 WordPress 中,与搜索接口相关的问题。
Posts/List Posts | https://developer.wordpress.org/rest-api/reference/posts/
应用
在旧版本(不记得什么时候了)的 WordPress 中,并没有内置 REST API,貌似需要单独安装;
在新版本(也不知道哪个版本开始)的 WordPress 中,已经内置了 REST API,可以直接使用;
# 03/13/2020 目前,我们使用的是 4.9 版本,所以这里是基于 WordPress 4.9 版本进行介绍;
# 05/08/2022 现在,我们使用 5.9.3 版本,追随官方更新,该笔记是对之前内容不断补充的结果;
参考 REST API Handbook 手册,以获取更多的官方说明。
第一步、添加 NGINX 重写
接口地址通常是 http://example.org/wp-json/wp/v2 的形式,鉴于 wp-json/ 并非目录,所以需要配置 Nginx 重写来传递给 index.php 处理:
location / {
try_files $uri $uri/ /index.php?$args;
}
当修改配置且重启 Nginx 后,可以访问 http://example.org/wp-json/wp/v2 以验证是否配置成功。
第二步、安装认证插件并配置
如果没有认证插件,只能进行查询,不能进行增删改。参考 Authentication 手册,获取对于认证相关内容的官方说明。
我们采用 Application Passwords 认证插件,创建密码的大致流程如下(详细的使用方法请仔细阅读插件描述):
1)在管理页面,进入用户的信息设置页面;
2)页面最底部,New Application Password Name,该字段仅是标识密码,仅注释作用;
3)点击 Add New Application Password 按钮,将自动生成密码,请注意保存;
# 05/08/2022 我们发现该插件已经合并到 WordPress 5.6 版本(Application Passwords);
第三步、修改文章测试
上述配置完成后,即可访问 REST API 来测试文章的创建:
# 如下命令,将创建标题为 New Title 的文章:
curl --header "Authorization: Basic $(echo -n 'username:application-passowrd' | base64)" \
-X POST \
-d "title=New Title" \
https://example.com/wp-json/wp/v2/pages
1)Authorization: Basic … 表示使用基础认证,建议使用 curl 推荐的传参方式。
2)认证信息,通过 echo -n “username:password” | base64 命令生成;
注意,在命令echo -n “admin:password”中,
1)amdin是登录管理后台的帐号,不是创建认证口令时的命名,这点插件描述中已经注明;
2)password不是登录管理后台的 admin 密码,而是在 Application Passwords 认证插件中创建的口令;
场景 | 搜索特定字段(搜索 Title 字段)
Posts | REST API Handbook | WordPress Developer Resources
默认情况,当调用 Serach API 时,将在“所有字段”(比如 Title Content Excerpt 等等)中搜索关键字。
但是我们仅希望搜索 Title 字段,而不是所有的字段。(这是因为 WordPress 搜索功能有限,返回文章并非按照相关读排序)
我们的解决方法如下:
1)安装 WP Extended Search 插件
2)通过前端的 example.com/?s=<keywords> 搜索
3)通过函数库来解析 HTML 文档。
参考
WP REST API
REST API Handbook
REST API – Create, Update or Delete posts using Basic Auth and HTTP API