Как добавить пользовательское поле в REST API WordPress

Иногда стандартные данные, которые возвращает REST API WordPress, не покрывают все потребности разработчика. Если вы создаёте фронтенд-приложение или мобильное приложение на React, Vue или другом фреймворке, часто требуется расширить API дополнительными пользовательскими полями (custom fields) из метаданных постов или пользовательскими данными.

Почему важно расширять REST API пользовательскими полями

По умолчанию WP REST API возвращает базовые данные поста, такие как заголовок, содержимое, дата и прочее. Но если вы используете Advanced Custom Fields (ACF) или добавляете метаполя вручную, эти данные не попадут в ответ API без дополнительной настройки. Добавление пользовательских полей в REST API позволяет упростить работу фронтенда, избавляя от необходимости делать дополнительные запросы к сайту или базе данных.

Добавление пользовательских полей с помощью register_rest_field

Самый удобный способ расширить REST API — использовать функцию register_rest_field. Она позволяет добавить произвольное поле к любому типу записи, возвращаемому API.

Пример: добавляем метаполе "_wpstuff_rating" к записи типа "post"

function wpstuff_register_rating_field() {
    register_rest_field('post', 'wpstuff_rating', [
        'get_callback' => 'wpstuff_get_post_rating',
        'update_callback' => 'wpstuff_update_post_rating',
        'schema' => [
            'description' => 'Рейтинг записи',
            'type' => 'integer',
            'context' => ['view', 'edit'],
        ],
    ]);
}
add_action('rest_api_init', 'wpstuff_register_rating_field');

function wpstuff_get_post_rating($object, $field_name, $request) {
    return (int) get_post_meta($object['id'], '_wpstuff_rating', true);
}

function wpstuff_update_post_rating($value, $object, $field_name) {
    if (!is_numeric($value)) {
        return new WP_Error('rest_invalid_param', 'Рейтинг должен быть числом', ['status' => 400]);
    }
    return update_post_meta($object->ID, '_wpstuff_rating', intval($value));
}

Этот код добавляет поле wpstuff_rating в JSON ответ REST API при запросе поста, а также позволяет обновлять его через PUT/PATCH запросы.

Использование плагина Advanced Custom Fields (ACF) для интеграции с REST API

Если вы используете плагин ACF для создания кастомных полей, то существует удобное решение для отображения этих полей в REST API — плагин ACF to REST API.

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

Пример ручного добавления ACF поля с помощью кода

function wpstuff_register_acf_field() {
    register_rest_field('post', 'wpstuff_acf_custom', [
        'get_callback' => function($object) {
            return get_field('custom_field_name', $object['id']);
        },
        'schema' => null,
    ]);
}
add_action('rest_api_init', 'wpstuff_register_acf_field');

Замените custom_field_name на имя вашего поля ACF. Такой подход даёт гибкость, если не хотите использовать дополнительный плагин.

Как проверить, что пользовательское поле добавлено в REST API

  • Отправьте GET запрос к API, например https://your-site.ru/wp-json/wp/v2/posts/123, где 123 — ID поста.
  • В ответе JSON найдите добавленное поле, например wpstuff_rating.
  • Для изменения данных используйте PUT или PATCH запрос с JSON телом, например:
{
  "wpstuff_rating": 5
}

Убедитесь, что у пользователя, под которым вы делаете запрос, есть права на редактирование записи.

Практические советы по безопасности и производительности

При расширении REST API пользовательскими полями важно учитывать:

  • Проверяйте права доступа (capabilities) перед возвратом или обновлением данных.
  • Если поля содержат чувствительную информацию, не выводите их для неавторизованных пользователей.
  • Кешируйте результаты, если поля требуют затратных запросов к базе.
  • Минимизируйте размер возвращаемых данных — не добавляйте слишком много полей без необходимости.

Заключение

Добавление пользовательских полей в WP REST API — важный шаг для создания современных и гибких приложений на WordPress. Используйте register_rest_field для кастомных решений или плагин ACF to REST API для быстрого интегрирования ACF полей. Внимательно контролируйте безопасность и права доступа, чтобы не раскрыть лишнюю информацию.

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

Отладка и оптимизация загрузки библиотек в WordPress
30.12.2025
Как создать многоуровневую навигацию в WordPress с примерами кода
18.02.2026
Как создать автоматический импорт контента из внешних источников в WordPress
13.01.2026
Как сделать автоматический откат обновлений WordPress при ошибках
06.03.2026
Как безопасно удалить или отключить плагин в WordPress без потери данных
29.11.2025