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

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

Основы работы с REST API пользователей WordPress

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

Основные эндпоинты для пользователей выглядят так:

  • /wp-json/wp/v2/users — получение списка пользователей;
  • /wp-json/wp/v2/users/{id} — получение информации о конкретном пользователе;
  • POST и PUT запросы к этим эндпоинтам — создание и обновление пользователей;
  • DELETE запрос — удаление пользователя.

Для доступа к этим эндпоинтам нужно использовать аутентификацию, например, через cookie авторизации или OAuth, либо JWT (JSON Web Token) — для внешних приложений.

Пример создания пользователя через REST API с помощью PHP

Допустим, у вас есть внешний скрипт, который должен создавать пользователя в WordPress. Ниже пример функции wpfaq_create_user_via_rest_api(), которая отправляет POST-запрос для создания пользователя.

function wpfaq_create_user_via_rest_api($site_url, $username, $password, $email, $role = 'subscriber') {
    $endpoint = $site_url . '/wp-json/wp/v2/users';
    $data = [
        'username' => $username,
        'email' => $email,
        'password' => $password,
        'roles' => [$role]
    ];

    $args = [
        'body' => json_encode($data),
        'headers' => [
            'Content-Type' => 'application/json',
            'Authorization' => 'Basic ' . base64_encode('admin:your_app_password'),
        ],
        'method' => 'POST'
    ];

    $response = wp_remote_request($endpoint, $args);

    if (is_wp_error($response)) {
        return $response->get_error_message();
    }

    $code = wp_remote_retrieve_response_code($response);
    if ($code === 201) {
        return json_decode(wp_remote_retrieve_body($response));
    } else {
        return 'Ошибка: ' . wp_remote_retrieve_response_message($response);
    }
}

Важное примечание — для авторизации здесь используется базовая авторизация с использованием паролей приложений WordPress. Это более безопасный способ, чем использование пароля администратора.

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

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

function wpfaq_update_user_email($site_url, $user_id, $new_email) {
    $endpoint = $site_url . '/wp-json/wp/v2/users/' . $user_id;
    $data = [
        'email' => $new_email
    ];

    $args = [
        'body' => json_encode($data),
        'headers' => [
            'Content-Type' => 'application/json',
            'Authorization' => 'Basic ' . base64_encode('admin:your_app_password'),
        ],
        'method' => 'PUT'
    ];

    $response = wp_remote_request($endpoint, $args);
    if (is_wp_error($response)) {
        return $response->get_error_message();
    }

    $code = wp_remote_retrieve_response_code($response);
    if ($code === 200) {
        return json_decode(wp_remote_retrieve_body($response));
    } else {
        return 'Ошибка: ' . wp_remote_retrieve_response_message($response);
    }
}

Удаление пользователя требует DELETE-запроса к тому же эндпоинту. При удалении можно указать, что делать с контентом пользователя — передать другому пользователю или удалить вместе с ним.

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

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

Например, чтобы запретить удаление пользователей через REST API всем, кроме администраторов, добавьте следующий код в functions.php вашей темы или в плагин:

add_filter('rest_endpoints', function($endpoints) {
    if (isset($endpoints['/wp/v2/users/(?P<id>\d+)'])) {
        $endpoint = &$endpoints['/wp/v2/users/(?P<id>\d+)'];
        foreach ($endpoint as $key => $handler) {
            if ($handler['methods'] === 'DELETE') {
                $endpoint[$key]['permission_callback'] = function() {
                    return current_user_can('administrator');
                };
            }
        }
    }
    return $endpoints;
});

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

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

Если вы создаёте кастомный интерфейс администрирования на React или Vue, то использование REST API — это оптимальный способ работы с пользователями.

Пример запроса на создание пользователя с использованием fetch и JWT авторизации:

fetch('https://example.com/wp-json/wp/v2/users', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your-jwt-token'
  },
  body: JSON.stringify({
    username: 'newuser',
    email: 'newuser@example.com',
    password: 'securePass123',
    roles: ['subscriber']
  })
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Ошибка:', error));

Для генерации JWT токена можно использовать плагин WP GPT или специализированные плагины JWT Authentication for WP REST API.

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

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

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

Как добавить дополнительное поле в форму входа WordPress с подтверждением
21.03.2026
WooCommerce: автоматическое изменение статуса заказа при оплате Почтой России
19.05.2026
WooCommerce: как исключить товары по атрибутам из корзины и поиска
28.04.2026
Как отключить регистрацию по бесплатным email в WordPress
25.03.2026
Как установить ограничение на регистрацию по IP в WordPress
31.03.2026