programing

REST API를 사용하여 게시할 사용자 지정 분류법 할당

i4 2023. 3. 2. 21:58
반응형

REST API를 사용하여 게시할 사용자 지정 분류법 할당

내장된 WP REST API를 이용하여 투고(커스텀 투고 타입)를 작성 중입니다.이 파트를 사용하고 있습니다.다음은 새로운 투고를 작성하기 위해 제출하는 JSON의 예입니다.

{
 "title": "The story of Dr Foo",
 "content": "This is the story content",
 "status":"publish",
 "excerpt":"Dr Foo story"
}

문제는 할당해야 할 분류법도 어떻게 전달하느냐는 것입니다.누가 물어본 흔적이나 방법을 못 찾겠어요?

콘텍스트의 경우,server 1게시물을 만들고 있으며 WP가 존재합니다.server 2.

또한 WP 서버에서 루프오버하여 wp_set_post_terms()에 따라 분류를 설정할 수 있는 요청과 함께 긴 메타데이터를 전달하려고 시도했습니다.

그러기 위해서는 REST API를 통해1개의 투고가 작성 또는 갱신된 후 (거의) rest_insert_{$this->post_type}이 기동됩니다.

이 방법의 문제는 메타 데이터가 다음 시간까지 설정되지 않는다는 것입니다.action_rest_insert_post_type()기능이 종료되었습니다.즉, 현재 투고 메타데이터를 취득하려고 하면 존재하지 않습니다.

function action_rest_insert_post_type( $post, $request, $true ) {

   $items = get_post_meta( $post->ID); // at this point in time, returns empty array.

   //wp_set_terms()

}

확인했습니다$post->ID정상적으로 동작하고 있습니다.메타데이터가 완전히 설정되어 있지 않을 뿐입니다.

조언 부탁드립니다.

function action_rest_insert_post( $post, $request, $true ) {
    $params = $request->get_json_params();
    if(array_key_exists("terms", $params)) {
        foreach($params["terms"] as $taxonomy => $terms) {
            wp_set_post_terms($post->ID, $terms, $taxonomy);
        }
    }
}

add_action("rest_insert_post", "action_rest_insert_post", 10, 3);

포스트를 사용했지만, 커스텀 포스트 타입의 경우는 다르지 않습니다.그냥, 접속하는 조작을 변경해 주세요.이것은 다음과 같은 호출을 받았을 때 정상적으로 동작합니다.

{
    "title": "The story of Dr Foo",
    "content": "This is the story content",
    "status":"publish",
    "excerpt":"Dr Foo story",
    "terms": {
        "mytaxonomy": [ "myterm", "anotherterm" ]
    }
}

POST를 통해 데이터를 전송하려면 매개 변수를 다음 주소로 전송하는 방법을 변경해야 합니다.

    $params = $request->get_body_params();

데이터를 다음과 같이 전송합니다.

title=testtitle&content=testcotnent&status=publish&excerpt=testexcert&terms[mytaxonomy][]=myterm&terms[mytaxonomy][]=anotherterm

몇 시간 지나면 나도 먹히는데...여기에 솔루션을 게시하면 둘 중 하나라도 도움이 될 수 있습니다.

이것은 함수에 기반을 둔 나의 함수이다.php

트란스쿠션엔이라는 우편물

function action_rest_insert_transaktionen( $post, $request, $true ) {
    $params = $request->get_json_params();
    if(array_key_exists("terms", $params)) {
        foreach($params["terms"] as $taxonomy => $terms) {
            wp_set_object_terms($post->ID, $terms, $taxonomy, true);
        }
    }
}
add_action("rest_insert_transaktionen", "action_rest_insert_transaktionen", 10, 3);

그리고 그게 바로 json:

{'title': 'Test,
          'status': 'publish',
          'content': 'Text,
          'author': '1',
          'format': 'standard',
           "terms": {"person": ["Test"]}
}

언급URL : https://stackoverflow.com/questions/47015522/assign-custom-taxonomy-to-post-with-rest-api

반응형