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

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

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

REST API — это интерфейс, который позволяет взаимодействовать с WordPress через HTTP-запросы и получать ответы в формате JSON. По умолчанию WordPress предоставляет стандартный набор эндпоинтов для работы с постами, страницами, таксономиями и пользователями.

Управление пользователями через REST API позволяет автоматизировать задачи, например, массовое создание пользователей, обновление их ролей, или интеграцию с внешними CRM-системами. Это особенно актуально для крупных сайтов с большим количеством регистраций и ролей.

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

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

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

GET /wp-json/wp/v2/users

Но доступ к нему ограничен правами — для получения списка пользователей пользователь должен иметь права на редактирование пользователей (обычно администратор). Пример запроса с использованием curl:

curl -u admin:password https://example.com/wp-json/wp/v2/users

Ответ будет в формате JSON с данными пользователей (ID, имя, URL, описание и т.д.).

Если нужно получить пользователей с определённой ролью, используйте параметр roles:

GET /wp-json/wp/v2/users?roles=subscriber

Это поможет фильтровать пользователей по ролям.

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

Для создания пользователя через REST API потребуется отправить POST-запрос на эндпоинт /wp-json/wp/v2/users с параметрами:

  • username — логин пользователя (обязательно)
  • email — email (обязательно)
  • password — пароль (обязательно)
  • roles — роли (опционально)
  • и другие поля, например first_name, last_name

Пример запроса на создание пользователя с использованием PHP и wp_remote_post:

function wplist_create_user_via_rest($user_data) {
    $url = site_url('/wp-json/wp/v2/users');
    $args = array(
        'headers' => array(
            'Authorization' => 'Basic ' . base64_encode('admin:password'),
            'Content-Type' => 'application/json'
        ),
        'body' => json_encode($user_data),
        'method' => 'POST'
    );
    $response = wp_remote_post($url, $args);
    if (is_wp_error($response)) {
        return $response->get_error_message();
    }
    return json_decode(wp_remote_retrieve_body($response), true);
}

// Использование:
$user_data = array(
    'username' => 'newuser',
    'email' => 'newuser@example.com',
    'password' => 'securePass123',
    'roles' => ['subscriber']
);
$result = wplist_create_user_via_rest($user_data);
print_r($result);

Обновление пользователя происходит через PUT-запрос на /wp-json/wp/v2/users/{id} с аналогичными параметрами. Например, чтобы изменить email пользователя с ID 15:

function wplist_update_user_email($user_id, $new_email) {
    $url = site_url('/wp-json/wp/v2/users/' . $user_id);
    $args = array(
        'headers' => array(
            'Authorization' => 'Basic ' . base64_encode('admin:password'),
            'Content-Type' => 'application/json'
        ),
        'body' => json_encode(array('email' => $new_email)),
        'method' => 'PUT'
    );
    $response = wp_remote_request($url, $args);
    if (is_wp_error($response)) {
        return $response->get_error_message();
    }
    return json_decode(wp_remote_retrieve_body($response), true);
}

// Использование:
$result = wplist_update_user_email(15, 'updatedemail@example.com');
print_r($result);

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

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

Удаление пользователя через REST API делается запросом DELETE на эндпоинт /wp-json/wp/v2/users/{id}. Пример вызова:

DELETE /wp-json/wp/v2/users/15

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

function wplist_delete_user($user_id) {
    $url = site_url('/wp-json/wp/v2/users/' . $user_id);
    $args = array(
        'headers' => array(
            'Authorization' => 'Basic ' . base64_encode('admin:password')
        ),
        'method' => 'DELETE'
    );
    $response = wp_remote_request($url, $args);
    if (is_wp_error($response)) {
        return $response->get_error_message();
    }
    return json_decode(wp_remote_retrieve_body($response), true);
}

// Использование:
$result = wplist_delete_user(15);
print_r($result);

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

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

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

Пример добавления кастомного поля "phone" для пользователей:

add_action('rest_api_init', function () {
    register_rest_field('user', 'phone', array(
        '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' => array(
            'description' => 'Телефон пользователя',
            'type' => 'string',
            'context' => array('view', 'edit')
        ),
    ));
});

Теперь при запросе пользователей в ответе будет дополнительное поле phone, а при создании или редактировании пользователя можно передавать это поле.

Это решение отлично подходит для расширения возможностей REST API под конкретные бизнес-задачи.

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

Для упрощения работы с REST API и управления пользователями рекомендуем обратить внимание на следующие плагины:

  • WP REST User — расширяет стандартные возможности API для пользователей, добавляет удобные эндпоинты.
  • Clearfy Pro — повышает безопасность REST API, управляет доступом к данным.
  • JWT Authentication for WP REST API — добавляет поддержку JWT токенов для аутентификации.

Все эти плагины можно найти и скачать на WPSHOP.RU. Они значительно упрощают разработку и обеспечивают безопасность при работе с REST API.

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

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

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

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

Защита от Brute Force атак в WordPress: как настроить надежную защиту
06.03.2026
WooCommerce: как настроить авторизацию по email вместо логина
02.05.2026
Как настроить автоматический импорт данных из внешнего источника в WordPress
05.02.2026
WooCommerce: как настроить авторизацию по email вместо логина
07.05.2026
Как удалить проблемные виджеты в WordPress без ошибок и потери данных
23.03.2026