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

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

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

REST API — это интерфейс взаимодействия с сайтом через стандартные HTTP-запросы. Благодаря нему можно обращаться к данным сайта (постам, пользователям, таксономиям и т.д.) в формате JSON. Управление пользователями через REST API открывает широкие возможности для интеграции с внешними приложениями, SPA (Single Page Application), мобильными приложениями и кастомными админ-панелями.

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

Настройка доступа и безопасности при работе с REST API пользователей

По умолчанию доступ к эндпоинтам пользователей имеет только аутентифицированный пользователь с правами администратора. Для работы с REST API в защищённом режиме используется аутентификация по cookie, OAuth или JWT. Если вы планируете открытые запросы, обязательно реализуйте дополнительную защиту.

Для начала подключим стандартный эндпоинт получения списка пользователей:

GET /wp-json/wp/v2/users

Для выполнения запроса от имени администратора можно использовать плагин WPGPT, который помогает в создании запросов и тестировании API.

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

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

add_action('rest_api_init', function () {
    register_rest_route('wpone/v1', '/add-user', [
        'methods' => 'POST',
        'callback' => 'wpone_add_user_handler',
        'permission_callback' => function () {
            return current_user_can('create_users');
        },
    ]);
});

function wpone_add_user_handler(WP_REST_Request $request) {
    $params = $request->get_json_params();
    $username = sanitize_user($params['username']);
    $email = sanitize_email($params['email']);
    $password = $params['password'];

    if (empty($username) || empty($email) || empty($password)) {
        return new WP_Error('missing_data', 'Не все необходимые данные переданы', ['status' => 400]);
    }

    if (username_exists($username) || email_exists($email)) {
        return new WP_Error('exists', 'Пользователь с таким именем или email уже существует', ['status' => 409]);
    }

    $user_id = wp_create_user($username, $password, $email);
    if (is_wp_error($user_id)) {
        return $user_id;
    }

    return ['success' => true, 'user_id' => $user_id];
}

Данный код регистрирует маршрут /wp-json/wpone/v1/add-user, который принимает POST-запрос с JSON-данными username, email и password. Проверяется, что пользователь аутентифицирован и имеет право создавать пользователей.

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

Получение данных пользователя по ID

Чтобы получить информацию о конкретном пользователе, можно сделать запрос:

GET /wp-json/wp/v2/users/{id}

Пример кода на PHP для выполнения запроса с использованием WPONE REST API клиента:

$response = wp_remote_get(site_url('/wp-json/wp/v2/users/123'), [
    'headers' => [
        'Authorization' => 'Bearer ' . $token,
    ],
]);

if (is_wp_error($response)) {
    // Обработка ошибки
} else {
    $data = json_decode(wp_remote_retrieve_body($response), true);
    // Используем данные $data
}

Обновление данных пользователя через REST API

Для обновления email или других данных используйте метод PATCH или PUT на стандартный маршрут:

POST /wp-json/wp/v2/users/{id}

Пример запроса с передачей новых данных:

{
    "email": "newemail@example.com"
}

Важно: обновление данных требует прав администратора или соответствующих capabilities.

Расширение функционала: интеграция с плагинами и кастомизация

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

Вот пример, как добавить собственное поле "phone" для пользователя и включить его в REST API:

add_action('rest_api_init', function () {
    register_rest_field('user', 'phone', [
        'get_callback' => function ($user) {
            return get_user_meta($user['id'], 'phone', true);
        },
        'update_callback' => function ($value, $user) {
            update_user_meta($user->ID, 'phone', sanitize_text_field($value));
        },
        'schema' => [
            'description' => 'Телефон пользователя',
            'type' => 'string',
            'context' => ['view', 'edit'],
        ],
    ]);
});

Теперь поле phone доступно при получении данных пользователя и может обновляться через REST API.

Заключение: лучшие практики и советы

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

Для удобного тестирования и расширенного управления API можно использовать плагины из WPShop. Их возможности помогут ускорить разработку и сократить количество ошибок.

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

Как использовать метаданные в WordPress для уникального контента
01.02.2026
Как запретить доступ к административной панели WordPress для определённых пользователей
21.03.2026
WooCommerce: как изменить стоимость товара после оплаты с помощью хука
04.05.2026
Как использовать WPONE REST API для получения данных и мета пользователя в WordPress
26.01.2026
Как удалить бесполезные CSS и JS в WordPress для ускорения сайта
22.02.2026