Как добавить свои поля в REST API WordPress для кастомных данных

WordPress с версии 4.7 предоставляет мощный REST API, который позволяет работать с данными сайта через HTTP-запросы. Однако стандартный REST API не всегда покрывает все потребности, особенно когда речь идет о кастомных полях и метаданных, которые вы добавляете к постам, страницам или пользовательским типам записей. В этой статье мы подробно разберем, как расширить REST API, чтобы включить в его ответы собственные поля и метаданные.

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

Стандартный REST API возвращает только базовые данные объектов (постов, пользователей, таксономий и т.д.). Но в реальных проектах часто используются дополнительные данные — кастомные поля, которые расширяют функциональность сайта. Без их включения в REST API вы не сможете получить или обновить эти данные через внешние приложения или JavaScript-фреймворки (React, Vue и др.).

Добавление собственных полей в REST API особенно актуально для headless WordPress, мобильных приложений или сложных интерфейсов на фронтенде.

Рассмотрим, как это сделать на примере добавления кастомного поля к типу записи «post».

Регистрация своих полей в REST API через register_rest_field

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

Пример добавления поля wpmeta_custom_text к объекту «post»:

function wpmeta_register_custom_field() {
    register_rest_field(
        'post', // Тип объекта, к которому добавляем поле
        'wpmeta_custom_text', // Имя нового поля
        array(
            'get_callback'    => 'wpmeta_get_custom_text',
            'update_callback' => 'wpmeta_update_custom_text',
            'schema'          => array(
                'description' => 'Пользовательское поле с текстом',
                'type'        => 'string',
                'context'     => array('view', 'edit'),
            ),
        )
    );
}
add_action('rest_api_init', 'wpmeta_register_custom_field');

function wpmeta_get_custom_text($object) {
    return get_post_meta($object['id'], 'wpmeta_custom_text', true);
}

function wpmeta_update_custom_text($value, $object, $field_name) {
    if (!is_string($value)) {
        return new WP_Error('rest_invalid_param', 'Значение должно быть строкой', array('status' => 400));
    }
    return update_post_meta($object->ID, $field_name, sanitize_text_field($value));
}

Объяснение кода:

  • В register_rest_field указываем тип объекта — здесь это посты.
  • get_callback — функция, которая возвращает значение поля. В нашем случае получаем мета-данные из БД.
  • update_callback — функция для обновления значения поля через REST API.
  • schema описывает тип и контекст поля, что помогает клиентам API правильно его использовать.

Тестирование нового поля в REST API

После добавления кода вы можете проверить работу через браузер или инструменты типа Postman. Запрос по ссылке:

https://ваш-сайт.ru/wp-json/wp/v2/posts/ИД_поста

В ответе JSON должно появиться новое поле wpmeta_custom_text с вашим значением.

Для обновления можно отправить PATCH запрос с телом:

{
  "wpmeta_custom_text": "Новое значение"
}

Если все сделано правильно, поле обновится в базе.

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

Если вы работаете с кастомными типами записей, процесс аналогичный. Просто укажите в register_rest_field ваш тип. Например, для типа product:

register_rest_field('product', 'wpmeta_price', array(
    'get_callback' => 'wpmeta_get_price',
    'update_callback' => 'wpmeta_update_price',
    'schema' => array(
        'description' => 'Цена продукта',
        'type' => 'number',
        'context' => array('view', 'edit')
    ),
));

function wpmeta_get_price($object) {
    return floatval(get_post_meta($object['id'], 'wpmeta_price', true));
}

function wpmeta_update_price($value, $object, $field_name) {
    if (!is_numeric($value)) {
        return new WP_Error('rest_invalid_param', 'Цена должна быть числом', array('status' => 400));
    }
    return update_post_meta($object->ID, $field_name, floatval($value));
}

Таким образом, вы расширяете REST API и делаете его удобным для вашего проекта.

Использование плагина Clearfy Pro для управления REST API

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

Это особенно полезно, если вы хотите ограничить видимость определенных пользовательских полей.

Советы и рекомендации по безопасности и производительности

Добавляя кастомные поля в REST API, следуйте нескольким рекомендациям:

  • Валидация и санитизация данных при обновлении — обязательно проверяйте тип и содержимое получаемых данных.
  • Используйте update_callback для контроля записи, чтобы не допустить записи некорректных данных.
  • Не раскрывайте чувствительные данные — фильтруйте поля, которые не должны попадать в ответ API.
  • Кешируйте результаты при больших нагрузках, чтобы снизить количество запросов к базе.

Соблюдение этих правил обеспечит стабильную и безопасную работу вашего REST API.

Заключение

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

Если хотите подробные решения для оптимизации и управления REST API, рекомендуем изучить Clearfy Pro, который поможет легко настроить API без лишних усилий.

Как автоматически добавить атрибуты alt и title к картинкам в WordPress
10.02.2026
Как создать автоматические уведомления о новых комментариях в WordPress
08.01.2026
Удаление неиспользуемых taxonomy terms в WordPress: пошаговое руководство
26.02.2026
Оптимизация базы данных WordPress: ускоряем сайт и снижаем нагрузку
21.11.2025
Как добавить автоматическое отслеживание изменений в WordPress
13.04.2026

Совсем скоро здесь откроется ресурс о вордпресс.