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 под ваши задачи — это значительно упростит разработку и поддержку сайта.