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.