如何使用WordPress Rest API发布文章并设置postmeta字段信息?要使用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
文件的地方。
1 |
<span class="pln">add_action</span><span class="pun">(</span> <span class="str">'rest_api_init'</span><span class="pun">,</span> <span class="kwd">function</span><span class="pun">()</span> <span class="pun">{</span> <span class="com">// 下面一行的 ‘post’ 文章类型,也可以是其他自定义文章类型;‘metadata’ 就是我们前端提交过来的 metadata 数组</span><span class="pln"> register_rest_field</span><span class="pun">(</span> <span class="str">'post'</span><span class="pun">,</span> <span class="str">'metadata'</span><span class="pun">,</span><span class="pln"> array</span><span class="pun">(</span> <span class="com">// 显示数据时候的回调,我们可以在这个函数里面,把自定义字段数据附加到 Rest API 文章接口返回的 Json 数据里</span> <span class="str">'get_callback'</span> <span class="pun">=></span> <span class="kwd">function</span><span class="pun">(</span><span class="pln"> $object </span><span class="pun">)</span> <span class="pun">{</span> <span class="kwd">return</span><span class="pln"> get_post_meta</span><span class="pun">(</span><span class="pln">$object</span><span class="pun">-></span><span class="pln">ID</span><span class="pun">);</span><span class="com">//自行修改需要返回的数据,此处是使用获取内容方法返回的内容</span> <span class="pun">},</span> <span class="com">// 保存数据的回调,这里是保存postmeta信息的地方</span> <span class="str">'update_callback'</span> <span class="pun">=></span> <span class="kwd">function</span><span class="pun">(</span><span class="pln"> $meta</span><span class="pun">,</span><span class="pln"> $post </span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> $postId </span><span class="pun">=</span><span class="pln"> $post</span><span class="pun">-></span><span class="pln">ID</span><span class="pun">;</span> <span class="kwd">foreach</span> <span class="pun">(</span><span class="pln">$meta </span><span class="kwd">as</span><span class="pln"> $data</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> update_post_meta</span><span class="pun">(</span><span class="pln">$postId</span><span class="pun">,</span><span class="pln"> $data</span><span class="pun">[</span><span class="str">'key'</span><span class="pun">],</span><span class="pln"> $data</span><span class="pun">[</span><span class="str">'value'</span><span class="pun">]);</span> <span class="pun">}</span> <span class="kwd">return</span> <span class="kwd">true</span><span class="pun">;</span> <span class="pun">},</span> <span class="pun">));</span> <span class="pun">});</span> |
get_callback
与update_callback
的区别我就不解释了。通过rest_api_init
钩子挂载了一个匿名函数,定义了接收到请求后的数据处理方式。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。