代码之家  ›  专栏  ›  技术社区  ›  Xhynk

通过WP API v2添加后置元字段

  •  4
  • Xhynk  · 技术社区  · 7 年前

    如果我发布这个原始请求,它会创建一个帖子:

    {
      "title": "Test Title",
      "content": "Test Content",
    }
    

    然而,我也在尝试添加一些自定义字段值,但我似乎无法让它们工作。此请求创建帖子,但不添加任何元字段:

    {
      "title": "Test Title",
      "content": "Test Content",
      "meta": {
        "foo": "bar",
        "foo2": "bar2"
      }
    }
    

    如何发布元字段 foo foo2 bar bar2 通过API端点 https://my-site.com/wp-json/wp/v2/posts ?

    编辑:在get请求中,自定义字段似乎不会以本机方式提取。我把这段代码放在一个mu插件中:

    add_filter( 'rest_prepare_post', 'xhynk_api_post_meta', 10, 3 );
    function xhynk_api_post_meta( $data, $post, $context ){
        $meta = get_post_custom( $post->ID );
    
        if( $meta ) {
            $data->data['meta'] = $meta;
        }
    
        return $data;
    }
    

    这至少让我可以在GET请求中查看它。然而,我似乎仍然无法通过邮递员把它寄出去。甚至添加 "status": "publish" 将导致新帖子发布,而不是默认情况下的草稿。是否有任何钩子或过滤器可以用于API POST请求,以确保添加了自定义字段?

    1 回复  |  直到 7 年前
        1
  •  13
  •   mmm    7 年前

    要在插入和更新时处理图元,可以使用action rest_insert_ + post type

    add_action("rest_insert_page", function (\WP_Post $post, $request, $creating) {
    
    
        $metas = $request->get_param("meta");
    
        if (is_array($metas)) {
    
            foreach ($metas as $name => $value) {
                update_post_meta($post->ID, $name, $value);
            }
    
        }
    
    
    }, 10, 3);