Как отображать поля ACF в REST API WordPress

Advanced Custom Fields (ACF) — один из самых популярных плагинов для работы с пользовательскими полями в WordPress. Однако по умолчанию поля ACF не отображаются в стандартном REST API WordPress. В этой статье разберём, как вывести данные ACF в REST API, чтобы использовать их в headless-приложениях, мобильных приложениях или для интеграций с внешними сервисами.

Почему важно выводить поля ACF в REST API WordPress

REST API WordPress предоставляет базовый набор данных постов, страниц и пользователей. Но часто для сложных проектов нужны дополнительные данные, которые хранятся именно в пользовательских полях ACF — например, галереи, адреса, дополнительные тексты или настройки.

Без вывода этих данных в API придётся делать обходные пути через дополнительные запросы или отдельные эндпоинты, что усложняет архитектуру и снижает производительность.

Включение полей ACF в REST API позволяет сразу получать все необходимые данные в одном запросе, упрощая работу фронтенд-разработчиков и ускоряя разработку.

Проблемы с выводом ACF по умолчанию в REST API

По умолчанию WordPress REST API не учитывает пользовательские поля, созданные через ACF. Это происходит потому, что ACF хранит данные в метаполях, а стандартный REST API не выводит все метаданные без регистрации дополнительных полей.

Чтобы исправить ситуацию, нужно явно регистрировать поля ACF для REST API или использовать специальные плагины и методы.

Методы вывода полей ACF в REST API

1. Использование плагина ACF to REST API

Самый простой способ — установить плагин ACF to REST API. Он автоматически добавляет все поля ACF к стандартным REST API ответам для постов, страниц и других типов записей.

Преимущества:

  • Минимум настроек — плагин работает сразу после активации.
  • Поддержка всех типов полей ACF.
  • Совместимость с кастомными типами записей.

Недостатки:

  • Может выводить слишком много данных, если много полей.
  • Меньше контроля над форматированием вывода.

2. Ручная регистрация полей ACF в REST API через код

Если нужен больший контроль, можно самостоятельно зарегистрировать нужные поля ACF в REST API с помощью хуков. Вот пример, как вывести поле ACF с ключом wpquery_custom_field для типа записи post:

add_action('rest_api_init', function () {
    register_rest_field('post', 'wpquery_custom_field', [
        'get_callback' => 'wpquery_get_custom_field',
        'schema' => null,
    ]);
});

function wpquery_get_custom_field($object, $field_name, $request) {
    return get_field('wpquery_custom_field', $object['id']);
}

В этом примере мы добавляем новое поле wpquery_custom_field к ответу REST API для постов. Функция get_field — это функция ACF, которая возвращает значение поля.

Так можно регистрировать сколько угодно полей и даже создавать сложные структуры.

3. Использование фильтров для вывода всех ACF полей

Если хотите вывести все поля ACF сразу без регистрации каждого вручную, можно использовать фильтр rest_prepare_post для добавления всех полей к ответу:

add_filter('rest_prepare_post', function ($response, $post, $request) {
    if (function_exists('get_fields')) {
        $fields = get_fields($post->ID);
        if ($fields) {
            $response->data['acf'] = $fields;
        }
    }
    return $response;
}, 10, 3);

Этот код добавит подмассив acf с полями ACF к любому ответу REST API для поста.

Практические советы и рекомендации

Оптимизация и безопасность

Вывод всех полей ACF может увеличить размер ответа и нагрузку на сервер. Рекомендуется:

  • Выводить только необходимые поля, избегая избыточных данных.
  • Ограничивать доступ к REST API через аутентификацию, если данные чувствительные.
  • Кэшировать ответы API для ускорения работы.

Тестирование вывода полей ACF в REST API

Для проверки результата удобно использовать инструменты типа Postman или встроенный браузер по адресу:

https://ваш-сайт.ru/wp-json/wp/v2/posts

Там в ответе вы должны увидеть добавленные поля ACF — либо как отдельные ключи, либо в подмассиве acf, в зависимости от способа реализации.

Пример интеграции с фронтендом на React

Получив данные ACF через REST API, можно использовать их в React-приложении. Пример запроса с помощью fetch:

fetch('https://ваш-сайт.ru/wp-json/wp/v2/posts')
  .then(response => response.json())
  .then(data => {
      data.forEach(post => {
          console.log(post.acf);
      });
  });

Дальше данные можно отобразить в компонентах, например, вывести кастомное поле в карточке поста.

Заключение

Вывод полей ACF в REST API — важная задача для современных проектов на WordPress, использующих headless-архитектуру или внешние приложения. Выбор метода зависит от ваших потребностей и навыков: от простого плагина ACF to REST API до тонкой настройки через код.

Используйте примеры из статьи для быстрого старта и адаптируйте под свои задачи. Это позволит существенно расширить возможности вашего WordPress-сайта и интегрировать его с любыми внешними системами.

WooCommerce: почему не отправляются письма о статусах заказов и как это исправить
22.04.2026
Как создать и использовать собственные таблицы в базе данных WordPress
24.11.2025
WooCommerce: отключение автоматического обновления продуктов без плагинов
13.05.2026
Как использовать WP_Query для эффективного кэширования запросов WordPress
08.01.2026
Кастомные условные аргументы для WP_Query в WordPress: практическое руководство
24.03.2026