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

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

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

REST API — это мощный инструмент для интеграции WordPress с внешними приложениями, фронтендами на React, Vue и прочими технологиями. Если вы создаете кастомные типы записей (custom post types) и добавляете к ним свои поля, важно, чтобы эти поля были доступны через API. Без этого фронтенд-приложения не смогут получать или сохранять нужные данные.

Отображение метаданных в REST API позволяет:

  • Упростить разработку headless-приложений на WordPress;
  • Обеспечить обмен данными с мобильными приложениями или внешними сервисами;
  • Улучшить структурированность данных и расширить возможности кастомизации.

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

Для того, чтобы метаданные отображались в REST API, их необходимо зарегистрировать с параметром show_in_rest. Рассмотрим, как это сделать на примере пользовательского поля wp_tavern_rating, которое будет хранить рейтинг записи.

function wptavern_register_post_meta() {
    register_post_meta('post', 'wp_tavern_rating', array(
        'type' => 'number',
        'single' => true,
        'show_in_rest' => true,
        'sanitize_callback' => 'absint',
        'auth_callback' => function() {
            return current_user_can('edit_posts');
        }
    ));
}
add_action('init', 'wptavern_register_post_meta');

Здесь мы регистрируем метаданные для типа записи post, указываем тип данных — number, и включаем поддержку REST API с помощью show_in_rest. Также добавлена функция для проверки прав доступа auth_callback, которая ограничивает изменение этого поля только пользователям с правами редактирования записей.

Пояснения к параметрам register_post_meta

  • type — определяет тип данных, например, string, number, boolean;
  • single — true, если поле хранит одно значение, false — если массив;
  • show_in_rest — ключевой параметр для включения поля в REST API;
  • sanitize_callback — функция для очистки данных перед сохранением;
  • auth_callback — проверка прав доступа для чтения/записи.

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

Если вы используете кастомный тип записи, например event, регистрация метаданных будет аналогичной, только первый параметр функции register_post_meta меняется на название вашего типа записи:

function wptavern_register_event_meta() {
    register_post_meta('event', 'wp_tavern_event_date', array(
        'type' => 'string',
        'single' => true,
        'show_in_rest' => true,
        'sanitize_callback' => 'sanitize_text_field',
        'auth_callback' => function() {
            return current_user_can('edit_events');
        }
    ));
}
add_action('init', 'wptavern_register_event_meta');
<

Обратите внимание, что для кастомных типов записей нужно заранее определить права доступа, например, edit_events. Если вы используете стандартные права, то для post или page подойдут edit_posts или edit_pages.

Как получить и обновить пользовательские метаданные через REST API

После регистрации метаданных они автоматически включаются в REST API. Например, запрос GET к /wp-json/wp/v2/posts/<id> будет содержать новое поле meta со всеми метаданными, зарегистрированными с show_in_rest.

Пример ответа REST API для записи с рейтингом:

{
  "id": 123,
  "date": "2024-06-01T10:00:00",
  "title": {"rendered": "Пример записи"},
  "meta": {
    "wp_tavern_rating": 5
  }
}

Обновить значение метаданных можно через запрос POST или PUT к тому же эндпоинту с передачей поля meta в теле запроса. Пример тела запроса для обновления рейтинга:

{
  "meta": {
    "wp_tavern_rating": 4
  }
}

Важно, чтобы пользователь, делающий запрос, имел права на редактирование записи, иначе операция будет отклонена.

Отображение пользовательских метаданных в REST API для таксономий

WordPress также позволяет регистрировать метаданные для таксономий, например, категорий или тегов. Для этого используется функция register_term_meta с аналогичными параметрами. Пример регистрации метаданных для категории:

function wptavern_register_category_meta() {
    register_term_meta('category', 'wp_tavern_category_icon', array(
        'type' => 'string',
        'single' => true,
        'show_in_rest' => true,
        'sanitize_callback' => 'sanitize_text_field',
        'auth_callback' => function() {
            return current_user_can('manage_categories');
        }
    ));
}
add_action('init', 'wptavern_register_category_meta');

После этого поле wp_tavern_category_icon будет отображаться в REST API при запросе к категориям.

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

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

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

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

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

  • Clearfy Pro — плагин для оптимизации и настройки WordPress, включая расширенное управление REST API;
  • Expert Review — позволяет создавать кастомные поля и управлять ими, интегрируя с REST API;
  • Advanced Custom Fields (ACF) с дополнением ACF to REST API для автоматического вывода полей.

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

Заключение

Отображение пользовательских метаданных в WordPress REST API — необходимая практика для современных проектов, использующих headless подходы и интеграции. Правильная регистрация метаданных с show_in_rest и настройка прав доступа обеспечивают надежное и удобное расширение API. В статье приведены подробные примеры кода и рекомендации, которые помогут вам быстро внедрить эту функциональность в своих проектах на WordPress.

Как создать собственный REST API эндпоинт в WordPress с фильтрами и параметрами
24.12.2025
Удаление неиспользуемых терминов таксономий в WordPress
03.04.2026
WooCommerce: решение проблем с расчетом доставки по зонам
12.05.2026
Отправка формы в WordPress без перезагрузки страницы с помощью AJAX
21.12.2025
Как использовать хук WooCommerce 'woocommerce_order_status_changed' для дополнительных действий при смене статуса заказа
04.05.2026