Что такое собственные поля в 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 без лишних сложностей.