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

Работа с REST API в WordPress открывает множество возможностей для создания современных и удобных интерфейсов и приложений. Однако стандартный набор данных, который возвращается для пользователей, часто бывает недостаточным для решения конкретных задач. В этой статье мы подробно разберём, как добавить дополнительное кастомное поле в REST API WordPress для объектов пользователя.

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

По умолчанию WordPress REST API предоставляет основные данные пользователя: ID, имя, email и прочее. Но зачастую для фронтенда или внешних сервисов нужны дополнительные данные, например, роль пользователя, дополнительные метаданные, статус в вашей системе или какие-либо настройки.

Добавление своих полей в REST API позволяет:

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

Рассмотрим, как это сделать на примере.

Пример: добавление поля "user_rating" для пользователя в REST API

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

Шаг 1. Создаём функцию для регистрации нового поля

Для этого используем хук rest_api_init и функцию register_rest_field. Ниже пример кода, который добавляет поле user_rating в вывод REST API:

function wpgen_register_user_rating_field() {
    register_rest_field(
        'user', // Тип объекта — пользователь
        'user_rating', // Имя нового поля
        array(
            'get_callback'    => 'wpgen_get_user_rating',
            'update_callback' => 'wpgen_update_user_rating',
            'schema'          => array(
                'description' => 'Рейтинг пользователя',
                'type'        => 'integer',
                'context'     => array('view', 'edit'),
            ),
        )
    );
}
add_action('rest_api_init', 'wpgen_register_user_rating_field');

Шаг 2. Создаём функцию получения значения поля

Функция возвращает значение метаполя из базы данных:

function wpgen_get_user_rating($object, $field_name, $request) {
    $user_id = $object['id'];
    $rating = get_user_meta($user_id, 'user_rating', true);
    return $rating ? intval($rating) : 0;
}

Шаг 3. Создаём функцию обновления значения поля

Позволяет изменять значение через REST API (например, при вызове метода PUT):

function wpgen_update_user_rating($value, $user, $field_name) {
    if (!is_numeric($value)) {
        return new WP_Error('rest_invalid_param', 'Рейтинг должен быть числом', array('status' => 400));
    }
    return update_user_meta($user->ID, $field_name, intval($value));
}

Тестирование и использование дополнительного поля в REST API

После добавления кода вы можете проверить работу через любой REST API клиент (Postman, Insomnia) или вызвать из браузера:

https://example.com/wp-json/wp/v2/users/123

В ответе в объекте пользователя появится поле user_rating с числовым значением.

Для обновления можно отправить PUT-запрос на тот же адрес с JSON телом:

{
  "user_rating": 5
}

Обратите внимание, что обновление будет работать только при наличии соответствующих прав (например, авторизация с правами администратора).

Дополнительные рекомендации по работе с REST API и кастомными полями

Безопасность и права доступа

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

function wpgen_update_user_rating($value, $user, $field_name) {
    if (!current_user_can('edit_user', $user->ID)) {
        return new WP_Error('rest_forbidden', 'Нет прав для изменения рейтинга', array('status' => 403));
    }
    if (!is_numeric($value)) {
        return new WP_Error('rest_invalid_param', 'Рейтинг должен быть числом', array('status' => 400));
    }
    return update_user_meta($user->ID, $field_name, intval($value));
}

Использование плагинов для расширения REST API

Если вы хотите более простое решение без написания кода, можно использовать плагины, например:

  • Clearfy Pro — позволяет управлять и расширять REST API через удобный интерфейс;
  • WPRemark — для добавления отзывов и дополнительных данных с поддержкой REST API;

Однако для полного контроля и кастомизации лучше писать собственные функции.

Работа с другими типами данных и кастомными типами записей

Принцип добавления полей в REST API схож и для других типов объектов WordPress: постов, таксономий, комментариев. Для каждого типа данных вызывается register_rest_field с соответствующим типом объекта. Это позволяет легко расширять API под любые бизнес-задачи.

Итоги

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

Как создать настройки плагина WordPress на основе Customizer
11.04.2026
Как добавить поддержку мультипостинговых записей в WordPress
14.04.2026
Как создать автозаполняемое поле для установки даты в WordPress
21.03.2026
Оптимизация загрузки изображений в WordPress для ускорения сайта
17.12.2025
Как создать настройки плагина WordPress с использованием Settings API
20.12.2025