Как использовать WPONE REST API для получения данных и мета пользователя в WordPress

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

Что такое WPONE REST API и зачем его расширять

WPONE REST API — это кастомная надстройка над стандартным REST API WordPress, которая позволяет создавать удобные и безопасные интерфейсы для работы с данными сайта. Часто в проектах возникает необходимость получить не только основные поля пользователя (имя, email), но и дополнительные мета данные, например, телефон, адрес, настройки профиля.

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

В этой статье мы используем префикс функций wpone_ для удобства и чтобы избежать конфликтов с другими плагинами.

Добавление мета полей пользователя в ответ WPONE REST API

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

add_action('rest_api_init', 'wpone_register_user_meta');
function wpone_register_user_meta() {
    register_rest_field('user', 'phone', [
        'get_callback' => 'wpone_get_user_phone',
        'update_callback' => null,
        'schema' => [
            'description' => 'Номер телефона пользователя',
            'type' => 'string',
            'context' => ['view', 'edit']
        ]
    ]);
}

function wpone_get_user_phone($user) {
    return get_user_meta($user['id'], 'phone', true);
}

Здесь мы добавили поле phone, которое возвращает мета данные с ключом phone из профиля пользователя. Таким образом, при запросе /wp-json/wp/v2/users/{id} будет возвращаться также и номер телефона.

Расширение для нескольких мета полей

Если нужно добавить сразу несколько полей, можно оформить это удобнее:

add_action('rest_api_init', 'wpone_register_multiple_user_meta');
function wpone_register_multiple_user_meta() {
    $meta_keys = ['phone', 'address', 'company'];
    foreach ($meta_keys as $key) {
        register_rest_field('user', $key, [
            'get_callback' => function($user) use ($key) {
                return get_user_meta($user['id'], $key, true);
            },
            'update_callback' => null,
            'schema' => [
                'description' => "Мета поле $key пользователя",
                'type' => 'string',
                'context' => ['view', 'edit']
            ]
        ]);
    }
}

Так вы быстро добавите нужные поля без дублирования кода.

Обработка запросов и безопасность данных

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

Для этого в register_rest_field добавьте проверку прав в параметр get_callback:

function wpone_get_user_phone_secure($user) {
    if (!current_user_can('list_users')) {
        return null; // или можно вернуть ошибку
    }
    return get_user_meta($user['id'], 'phone', true);
}

И замените в регистрации поля 'get_callback' => 'wpone_get_user_phone_secure'. Так вы гарантируете, что данные не попадут в руки посторонних.

Пример запроса и разбор результата

После расширения API вы можете получить данные пользователя с помощью запроса:

GET https://example.com/wp-json/wp/v2/users/2

Ответ будет содержать стандартные поля и дополнительно ваше мета поле phone:

{
  "id": 2,
  "name": "Ivan Petrov",
  "email": "ivan@example.com",
  "phone": "+7 999 123-45-67"
}

Это удобно для фронтенд-приложений, мобильных клиентов или админ-панелей, которым нужно расширенное представление пользователя.

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

Если вы хотите упростить работу с мета полями и REST API, рекомендуем обратить внимание на плагин Clearfy Pro. Он позволяет удобно управлять мета полями, оптимизировать API и повышать безопасность.

Еще один полезный инструмент — WPRemark, который помогает создавать динамические комментарии и отзывы с использованием расширенного API.

Расширение WPONE REST API для записи мета полей пользователя

Если нужно не только получать, но и изменять мета данные через API, добавьте параметр update_callback:

register_rest_field('user', 'phone', [
    'get_callback' => 'wpone_get_user_phone_secure',
    'update_callback' => 'wpone_update_user_phone',
    'schema' => [
        'description' => 'Номер телефона пользователя',
        'type' => 'string',
        'context' => ['view', 'edit']
    ]
]);

function wpone_update_user_phone($value, $user, $field_name) {
    if (!current_user_can('edit_user', $user->ID)) {
        return new WP_Error('rest_forbidden', esc_html__('Недостаточно прав для изменения телефона пользователя.'), ['status' => 403]);
    }
    if (!is_string($value)) {
        return new WP_Error('rest_invalid_param', esc_html__('Неверный формат телефона.'), ['status' => 400]);
    }
    return update_user_meta($user->ID, $field_name, sanitize_text_field($value));
}

Теперь при отправке PATCH или PUT запроса на /wp-json/wp/v2/users/{id} с параметром phone вы сможете обновлять это значение.

Заключение по теме расширения WPONE REST API

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

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

Как удалить или скрыть пользователя в WordPress без удаления аккаунта
06.04.2026
Как использовать REST API WordPress для создания собственных приложений
13.11.2025
Как использовать REST API для управления пользователями в WordPress
16.04.2026
Как безопасно удалить мета данные из базы WordPress без потерь
18.12.2025
WooCommerce: как изменить стоимость товара после оплаты с помощью хука
04.05.2026