2017-10-25 8 views
0

WP API v2로 플레이하고 포스트 만의 게시물을 삽입하려고합니다. 나는이 원시 요청을 게시 할 경우WP API v2를 통해 포스트 메타 필드 추가

, 그냥 좋은 게시물을 작성

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

을하지만, 나뿐만 아니라이 일부 사용자 정의 필드 값을 추가하기 위해 노력하고있어, 내가 얻을 수없는 것 그들에게 일하도록. 이 요청은 게시물을 만들지 만 어떤 메타 필드를 추가하지 않습니다

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

가 어떻게 메타 필드 foo 그 값은 API 엔드 포인트 https://my-site.com/wp-json/wp/v2/posts 통해 barbar2foo2를 기록하나요?

편집 : 사용자 지정 필드가 GET 요청에서 기본적으로 가져 오지 않는 것처럼 보입니다. 나는이 코드를 mu-plugin에 넣었다.

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 요청으로 볼 수있다. 그러나 나는 아직도 우편 배달부를 통해 POST를받을 수 없다. "status": "publish"을 추가하더라도 새 게시물이 기본적으로 초안이 아닌 게시되도록합니다. 사용자 정의 필드가 추가되었는지 API POST 요청에 사용할 수있는 후크 또는 필터가 있습니까?

답변

1

당신이 행동 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); 
+0

당신, 내 친구와 함께 할 수 있고, 삽입 및 업데이트에 METAS을 처리하기 위해, 절대 생명의 은인이다! 나는 이것에 2 일 동안 나의 머리를 끌어 당기고 있었다! 그러나'\ WP_Post $ post'의 목적이 함수 선언에 무엇인지 물어볼 수 있습니까? 나는 그것을 다음과 같이 시도해 보았다 :'add_action ('rest_insert_post', function ($ post, $ request, $ creating) {'그 조각이 당신의 대답을 위해 무엇을 원했는지 궁금하다면? – Xhynk

+0

그것은 http : // 타입 선언이다. /php.net/functions.arguments#functions.arguments.type-declaration – mmm

+0

아, 설명해 주셔서 감사합니다! – Xhynk