让代码更简单

当前位置:代码狗 > WordPress > WP建站 > 正文

WordPress Rest API发布文章并设置postmeta字段信息

重要:本文最后更新于2020-03-30 08:30:42,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

如何使用WordPress Rest API发布文章并设置postmeta字段信息?要使用WordPress Rest API发布文章必须先鉴权,具体过程请参考JWT Authentication插件为WordPress REST API验证用户权限。WordPress Rest API接收的文章字段仅包含posts数据表,不包含postmeta数据表,所以要保存postmeta信息,必须添加自定义回调函数处理。

WP REST API

WP REST API

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_callbackupdate_callback的区别我就不解释了,看过wp rest api的都清楚。通过rest_api_init钩子挂载了一个匿名函数,定义了接收到请求后的数据处理方式。

postman提交测试

WordPress Rest API发布文章并设置postmeta字段信息

WordPress Rest API发布文章并设置postmeta字段信息

WordPress Rest API发布文章并设置postmeta字段信息

WordPress Rest API发布文章并设置postmeta字段信息

只需注意postman提交数组数据的时候不能用键值对提交。在使用其它语言提交的时候,注意需要发送数组,别发字符串,别发字符串,别发字符串!

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏

评论 4

  1. #2

    把上面的一段关于postmeta的代码放到了主题的functions.php中最下面 postman测试添加文章,文章表正常添加了 postmeta表中没有增加信息。是上面一段代码放的位置不对?还是什么原因?

    千百℃4个月前 (04-16)回复
    • 注意提交的postmeta数据需要以数组的形式提交,postman提交参考我文章中图片内容。

      代码狗4个月前 (04-16)回复
  2. #1

    请问一下我的报401是什么问题?应该怎么解决
    {
    “code”: “rest_cannot_create”,
    “message”: “抱歉,您不能作为此用户创建文章。”,
    “data”: {
    “status”: 401
    }
    }

    千百℃4个月前 (04-16)回复
    • 应该是用户没有发布文章的权限,需要作者及以上的权限才行。

      代码狗4个月前 (04-16)回复
×

请作者吃根烤肠!

支付宝