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

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

Обзор REST API для пользователей WordPress

По умолчанию WordPress предоставляет REST API для работы с типами записей и пользователями. Эндпоинты пользователей доступны по пути /wp-json/wp/v2/users. Однако, для работы с ними требуется аутентификация с правами администратора или редактора, так как данные пользователей — это чувствительная информация.

Основные методы для пользователя:

  • GET — получение списка пользователей или конкретного пользователя по ID.
  • POST — создание нового пользователя.
  • PUT/PATCH — обновление данных пользователя.
  • DELETE — удаление пользователя.

Для аутентификации можно использовать cookie, OAuth, JWT или базовую аутентификацию. Для безопасности рекомендуем JWT либо OAuth.

Аутентификация для работы с пользователями

Для демонстрации используем плагин WPDO JWT Auth, который позволяет добавить поддержку JWT токенов для REST API.

После установки и настройки плагина вы получите возможность отправлять запросы с заголовком Authorization: Bearer <token>.

Пример: Получение списка пользователей через REST API

Давайте посмотрим, как получить список пользователей с помощью PHP и wpdo_ префикса в функции.

function wpdo_get_users_list($token) {
    $url = site_url('/wp-json/wp/v2/users');
    $args = [
        'headers' => [
            'Authorization' => 'Bearer ' . $token,
        ],
    ];
    $response = wp_remote_get($url, $args);
    if (is_wp_error($response)) {
        return null;
    }
    $body = wp_remote_retrieve_body($response);
    $users = json_decode($body, true);
    return $users;
}

Вызовите эту функцию, передав JWT токен, чтобы получить массив пользователей. Можно фильтровать пользователей по параметрам, например, по роли, используя query-параметры API.

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

Для создания пользователя отправляем POST-запрос на /wp-json/wp/v2/users с обязательными параметрами username, email, password. Пример кода:

function wpdo_create_user_via_api($token, $username, $email, $password) {
    $url = site_url('/wp-json/wp/v2/users');
    $args = [
        'headers' => [
            'Authorization' => 'Bearer ' . $token,
            'Content-Type' => 'application/json',
        ],
        'body' => json_encode([
            'username' => $username,
            'email' => $email,
            'password' => $password,
            'roles' => ['subscriber'],
        ]),
        'method' => 'POST',
    ];
    $response = wp_remote_request($url, $args);
    if (is_wp_error($response)) {
        return null;
    }
    $body = wp_remote_retrieve_body($response);
    return json_decode($body, true);
}

Обратите внимание, что WordPress не позволяет создавать пользователей с ролью администратора через REST API без дополнительной доработки безопасности.

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

Часто требуется работать с дополнительными метаполями пользователей. Для этого нужно зарегистрировать их в REST API. Пример регистрации поля phone_number:

add_action('rest_api_init', function () {
    register_rest_field('user', 'phone_number', [
        'get_callback' => function ($user) {
            return get_user_meta($user['id'], 'phone_number', true);
        },
        'update_callback' => function ($value, $user) {
            return update_user_meta($user->ID, 'phone_number', sanitize_text_field($value));
        },
        'schema' => [
            'description' => 'Phone number of the user',
            'type' => 'string',
        ],
    ]);
});

Теперь поле phone_number будет доступно в запросах GET и можно обновлять через PATCH/PUT.

Удаление пользователя через REST API

Удаление пользователя — это серьёзная операция. Эндпоинт /wp-json/wp/v2/users/{id} с методом DELETE позволяет это сделать. Пример функции:

function wpdo_delete_user($token, $user_id) {
    $url = site_url("/wp-json/wp/v2/users/{$user_id}");
    $args = [
        'headers' => [
            'Authorization' => 'Bearer ' . $token,
        ],
        'method' => 'DELETE',
    ];
    $response = wp_remote_request($url, $args);
    if (is_wp_error($response)) {
        return false;
    }
    $code = wp_remote_retrieve_response_code($response);
    return $code === 200;
}

Внимание: при удалении пользователя можно указать, куда перенаправить его контент, чтобы не потерять данные.

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

Обязательно используйте авторизацию через JWT или OAuth, чтобы избежать утечки данных. Не предоставляйте доступ к REST API пользователям без необходимости. Также можно ограничить доступ через плагин Clearfy Pro, который позволяет гибко настроить права и разрешения.

Для защиты можно добавить проверку nonce или IP, а также логировать все запросы для аудита безопасности.

Заключение

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

Используйте приведённые примеры и расширяйте REST API под ваши задачи — это значительно упростит разработку и поддержку сайта.

Как удалить категорию из URL в WordPress с помощью функции
08.04.2026
Как создать свой виджет для WordPress
25.11.2025
Как автоматически удалять старые черные списки комментариев в WordPress
31.03.2026
WooCommerce: отладка проблем с оплатой через Яндекс.Кассу
13.05.2026
Как автоматизировать удалённые обновления в WordPress без плагинов
07.02.2026