无法使用WordPress REST的wpapi Node.js包装器创建自定义字段

时间:2019-12-09 10:09:14

标签: javascript node.js wordpress rest api

我使用以下代码段,使用Node.js包装器通过REST API创建WordPress帖子:

   var wp = new WPAPI({
       endpoint: 'http://your-site.com/wp-json',
       username: 'someusername',
       password: 'password'
   });
   wp.posts().create({
       title: 'Your Post Title',
       content: 'Your post content',
       status: 'publish',
       meta: { "custom_field": "my custom field value" }
   }).then(function( response ) {
       console.log( response.id );
   })

获取帖子时,meta为空。

那是为什么,我该如何解决?

1 个答案:

答案 0 :(得分:1)

由于某种原因,这对我也不起作用。我最后使用了WordPress REST钩子。

functions.php中,我添加了:

add_filter( 'pre_post_update' , function ( $post_id , $post ) {
  $body = json_decode(file_get_contents('php://input'), true);
  $meta_fields = $body["meta"];
  foreach ($meta_fields as $meta_key => $value) {
      update_post_meta($post_id, $meta_key, $value);
  }
}, '99', 2 );

上面的代码段将解析meta字段并更新帖子元数据字段。

如果要在响应中包括自定义字段,则可以使用:

//Get custom fields via Rest API
add_action( 'rest_pre_echo_response', function( $response, $object, $request ) {
  //* Get the post ID
  $post_id = $response[ 'id' ];
  if ($response['type'] !== 'post' && $response['type'] !== 'page') return $response;
  $response['custom_fields'] = get_post_meta($post_id);
  return $response;
}, 10, 3 );