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, которые помогут сделать ваш сайт ещё мощнее и удобнее.