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

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

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

Уникальные пользовательские поля — это метаданные, которые добавляются к записям для расширения их функционала. Например, вы можете хранить дополнительную информацию о продукте, авторе или событии. Если вы используете WP REST API для интеграции с внешними приложениями или фронтендом на React/Vue, полезно иметь доступ к этим данным напрямую из API.

По умолчанию WordPress REST API не возвращает все метаполя, а только определённые или те, которые зарегистрированы специальным образом. Поэтому нужно правильно зарегистрировать эти поля для REST API.

Регистрация уникальных полей для WP REST API

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

Рассмотрим пример — добавим уникальное поле wpcom_custom_rating для постов, которое хранит рейтинг записи.

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

function wpcom_get_custom_rating($object) {
    $post_id = $object['id'];
    return (int) get_post_meta($post_id, 'wpcom_custom_rating', true);
}

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

В этом коде мы регистрируем новое поле wpcom_custom_rating для типа записи post. При получении записи через REST API в объекте появится поле с рейтингом. Также можно обновлять это поле через PUT/PATCH запросы.

Использование плагинов для управления уникальными полями в REST API

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

  • Advanced Custom Fields (ACF): популярный плагин для создания и управления метаполями. С помощью дополнения ACF to REST API вы можете автоматически включить все поля ACF в REST API.
  • Clearfy Pro: плагин оптимизации, который среди прочего помогает управлять REST API и метаданными. Можно тонко настроить, какие поля отображать.

Пример с ACF:

add_filter('acf/rest_api/field_settings/show_in_rest', '__return_true');

После этого все ваши поля ACF будут доступны в REST API без дополнительного кода.

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

1. Безопасность: будьте осторожны с тем, какие поля открываете в REST API. Никогда не выводите чувствительную информацию.

2. Кэширование: если у вас много метаданных, подумайте о кэшировании результатов API, чтобы не нагружать базу данных.

3. Типы данных: правильно указывайте схему, чтобы избежать ошибок при валидации и обновлении через API.

4. Тестирование: проверяйте запросы через Postman или аналогичные инструменты, чтобы убедиться, что данные корректно передаются и принимаются.

Вывод

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

Для более глубокой оптимизации и управления функционалом обратите внимание на продукты Clearfy Pro и WPGPT, которые помогут сделать ваш сайт ещё мощнее и удобнее.

Сервис определения шаблона и плагинов на сайте