如何使用WordPress Rest API发布文章并设置postmeta字段信息?要使用WordPress Rest API发布文章必须先鉴权,具体过程请参考JWT Authentication插件为WordPress REST API验证用户权限。WordPress Rest API接收的文章字段仅包含posts数据表,不包含postmeta数据表,所以要保存postmeta信息,必须添加自定义回调函数处理。
WordPress Rest API发布文章
WordPress Rest API发布文章的接口比较简单,这里简单介绍下发布文章过程。
请求地址:域名/wp-json/wp/v2/posts
请求参数:
- title(文章标题)
- content(文章内容)
- 其它参数
返回值:成功返回文章信息,失败返回提示信息。
WordPress Rest API保存postmeta
postmeta信息需要我们添加WordPress Rest API扩展程序,因为它没有对postmeta信息的处理办法。下面提供一段保存postmeta信息的代码,放在能被wordpress核心加载的地方就行了,比如主题的functions.php或者插件中,或者任何在引用了wp-load.php
文件的地方。
add_action( 'rest_api_init', function() { // 下面一行的 ‘post’ 文章类型,也可以是其他自定义文章类型;‘metadata’ 就是我们前端提交过来的 metadata 数组 register_rest_field( 'post', 'metadata', array( // 显示数据时候的回调,我们可以在这个函数里面,把自定义字段数据附加到 Rest API 文章接口返回的 Json 数据里 'get_callback' => function( $object ) { return get_post_meta($object->ID);//自行修改需要返回的数据,此处是使用获取内容方法返回的内容 }, // 保存数据的回调,这里是保存postmeta信息的地方 'update_callback' => function( $meta, $post ) { $postId = $post->ID; foreach ($meta as $data) { update_post_meta($postId, $data['key'], $data['value']); } return true; }, )); });
get_callback
与update_callback
的区别我就不解释了,看过wp rest api的都清楚。通过rest_api_init
钩子挂载了一个匿名函数,定义了接收到请求后的数据处理方式。
postman提交测试
只需注意postman提交数组数据的时候不能用键值对提交。在使用其它语言提交的时候,注意需要发送数组,别发字符串,别发字符串,别发字符串!
评论 (4)
{
"code": "rest_cannot_create",
"message": "抱歉,您不能作为此用户创建文章。",
"data": {
"status": 401
}
}