wpmake.ru wordpress WPMake

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

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

Собственные поля (custom fields) в WordPress — это дополнительные метаданные, которые позволяют расширять стандартные записи и страницы, добавляя к ним уникальную информацию. Обычно они применяются для хранения специфических данных, которые не входят в стандартный набор полей WordPress.

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

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

Как зарегистрировать пользовательские поля для отображения в REST API

Для того чтобы собственные поля появлялись в ответах REST API, необходимо зарегистрировать их с помощью функции register_rest_field(). Этот метод позволяет указать, как и какие данные должны быть добавлены к объекту записи.

Рассмотрим пример, когда у нас есть метаполе с ключом _wpmake_custom_data, которое мы хотим добавить в REST API:

function wpmake_register_custom_fields() {
    register_rest_field(
        'post', // Тип записи
        'wpmake_custom_data', // Имя поля в API
        array(
            'get_callback'    => 'wpmake_get_custom_data',
            'update_callback' => 'wpmake_update_custom_data',
            'schema'          => null,
        )
    );
}
add_action('rest_api_init', 'wpmake_register_custom_fields');

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

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

В этом коде мы добавляем поле wpmake_custom_data к типу записи post. Функции обратного вызова отвечают за получение и обновление данных метаполя.

Поддержка других типов метаполей

Если ваши метаполя содержат массивы или более сложные структуры, их можно сериализовать в JSON или использовать более сложные схемы. Также можно определить schema параметр для валидации данных.

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

После регистрации поля в REST API, можно посмотреть его значение через запрос:

GET /wp-json/wp/v2/posts/123

В ответе к записи появится новый ключ wpmake_custom_data с вашим значением.

Чтобы обновить это поле, отправьте PATCH-запрос:

PATCH /wp-json/wp/v2/posts/123
{
    "wpmake_custom_data": "Новое значение"
}
<

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

Работа с пользовательскими типами записей и таксономиями

Регистрация собственных полей для кастомных типов записей аналогична регистрации для стандартных. Просто в register_rest_field() укажите нужный тип записи:

register_rest_field(
    'wpmake_product',
    'custom_price',
    array(
        'get_callback'    => 'wpmake_get_custom_price',
        'update_callback' => 'wpmake_update_custom_price',
        'schema'          => array(
            'type'        => 'number',
            'description' => 'Цена продукта',
            'context'     => array('view', 'edit'),
        ),
    )
);

Для таксономий тоже можно добавить дополнительные поля в REST API, используя register_rest_field() с типом таксономии.

Плагины для расширения возможностей REST API с пользовательскими полями

Если не хочется писать код вручную, существуют плагины, которые упрощают добавление метаполей в REST API:

  • ACF to REST API — расширяет REST API для полей Advanced Custom Fields.
  • WP REST API Controller — позволяет управлять, какие поля показывать в API и как они обрабатываются.
  • REST API Custom Fields — простой плагин для добавления пользовательских полей в API.

Тем не менее, ручная регистрация дает больше контроля и гибкости.

Советы и лучшие практики

  • Всегда валидируйте и очищайте данные в update_callback, чтобы избежать уязвимостей.
  • Используйте схемы (schema), чтобы указать типы данных и описание.
  • Добавляйте REST API поля только там, где это действительно нужно, чтобы не перегружать ответы.
  • Проверяйте права доступа в колбэках, если данные должны быть доступны только определенным пользователям.

Заключение

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

Примеры кода в статье помогут быстро внедрить эту функциональность и настроить работу с метаполями через API без лишних сложностей.

×
Прокачай свой WordPress!

Скидка -20% на премиум темы и плагины

Воспользоваться сейчас ⋙