programing

모든 ACF 필드를 Wordpress REST API에 표시하는 방법 페이지와 사용자 지정 포스트타이프

batch 2023. 3. 27. 21:07
반응형

모든 ACF 필드를 Wordpress REST API에 표시하는 방법 페이지와 사용자 지정 포스트타이프

javascript를 통해 API 호출을 하기 위해 페이지 또는 커스텀 포스트 타입에 속하는 모든 ACF 필드를 WordPress REST API에 노출시키고 싶습니다.

최종적인 예상 결과는 네트워크 내의 모든 ACF 필드가 됩니다.ACF쉽게 접근할 수 있는 객체입니다.

또 하나의 심플한 솔루션은 현재 나에게 딱 맞습니다.다음 기능을 에 추가할 수 있습니다.functions.php또는fields.phprest 요구를 송신하기 전에 ACF를 사용한다.이것은 임의의 특별한 페이지에 추가할 수 있습니다.rest_prepare_page또는rest_prepare_post.

ACF 데이터는 키를 사용하여 json 응답에 있습니다.acf

// add this to functions.php
//register acf fields to Wordpress API
//https://support.advancedcustomfields.com/forums/topic/json-rest-api-and-acf/

function acf_to_rest_api($response, $post, $request) {
    if (!function_exists('get_fields')) return $response;

    if (isset($post)) {
        $acf = get_fields($post->id);
        $response->data['acf'] = $acf;
    }
    return $response;
}
add_filter('rest_prepare_post', 'acf_to_rest_api', 10, 3);

다음 코드를 통해 노출할 수 있습니다.pagepress REST API의 커스텀 포스트유형 ACF 필드에 접속하여ACF물건.

포스트유형을 커스터마이즈하여 제외하거나 어레이에 포함할 수 있습니다.$postypes_to_exclude그리고.$extra_postypes_to_include.

function create_ACF_meta_in_REST() {
    $postypes_to_exclude = ['acf-field-group','acf-field'];
    $extra_postypes_to_include = ["page"];
    $post_types = array_diff(get_post_types(["_builtin" => false], 'names'),$postypes_to_exclude);

    array_push($post_types, $extra_postypes_to_include);

    foreach ($post_types as $post_type) {
        register_rest_field( $post_type, 'ACF', [
            'get_callback'    => 'expose_ACF_fields',
            'schema'          => null,
       ]
     );
    }

}

function expose_ACF_fields( $object ) {
    $ID = $object['id'];
    return get_fields($ID);
}

add_action( 'rest_api_init', 'create_ACF_meta_in_REST' );

다음은 참고 요지입니다.https://gist.github.com/MelMacaluso/6c4cb3db5ac87894f66a456ab8615f10

다음 플러그인을 사용하여 REST의 ACF 필드를 표시할 수 있습니다.

https://wordpress.org/plugins/acf-to-rest-api/

ACF 필드에 관계가 있고 이러한 관계도 정지 상태로 포함할 경우 다음 플러그인을 사용할 수 있습니다.

https://github.com/airesvsg/acf-to-rest-api-recursive

ACF는 버전 5.11 이후 각 필드를 통해 REST API에 필드를 추가할 수 있습니다.업데이트는 https://www.advancedcustomfields.com/resources/rest-api/ 에서 확인하실 수 있습니다.

요점은 각 필드에 "Show in REST API" 설정이 있다는 것입니다.기본적으로는 "아니오"로 설정되어 있지만 "예"로 전환하면 각 포스트/커스텀 포스트 유형의 REST 데이터에 추가됩니다.

언급URL : https://stackoverflow.com/questions/56473929/how-to-expose-all-the-acf-fields-to-wordpress-rest-api-in-both-pages-and-custom

반응형