Как предоставить доступ ко всем полям ACF в WordPress REST API как на страницах, так и в пользовательских записях?

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

В этой статьей вы узнаете, как предоставлять доступ ко всем полям ACF в WordPress REST API на страницах и пользовательских записях.

Конечным ожидаемым результатом будут все поля ACF внутри объекта ACF, к которым вы можете легко получить доступ.

С помощью следующего кода вы сможете отображать свои настраиваемые поля ACF posttypes в API REST WordPress и получать к ним доступ внутри ACF объекта.

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' );

Еще одно простое решение, которое отлично работает. Вы можете добавить следующую функцию в functions.php или fields.php с помощью getFields перед отправкой запроса. Вы можете добавить это на любую специальную страницу 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);

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии