WordPress REST API открывает широкие возможности для управления сайтом программно, в том числе и для работы с пользователями. В этой статье мы подробно разберём, как с помощью REST API создавать, получать, обновлять и удалять пользователей WordPress. Это полезно для интеграций, мобильных приложений или кастомных админ-панелей.
Что такое REST API в WordPress и зачем управлять пользователями через него
REST API представляет собой набор URL-эндпоинтов, которые позволяют работать с данными сайта через запросы HTTP. Управление пользователями через API удобно, если нужно автоматизировать регистрацию, обновление профилей или удаление пользователей вне стандартной админки.
Основные операции с пользователями через REST API:
- Получение списка пользователей и данных конкретного пользователя
- Создание нового пользователя
- Обновление данных пользователя
- Удаление пользователя
Для работы с пользователями через REST API необходимы права администратора или подходящие capabilities, а также аутентификация (например, через JWT или OAuth).
Подключение и аутентификация для работы с REST API пользователей
По умолчанию эндпоинты WordPress REST API для пользователей защищены. Для аутентификации можно использовать разные методы, но JWT токены — один из удобных и популярных. Рассмотрим пример с плагином JWT Auth for WP.
После установки плагина и настройки секретного ключа в wp-config.php вы получаете возможность авторизовываться через POST-запрос на /wp-json/jwt-auth/v1/token, передавая логин и пароль пользователя.
Пример запроса для получения токена:
POST https://example.com/wp-json/jwt-auth/v1/token
Content-Type: application/json
{
"username": "admin",
"password": "password123"
}
В ответ вы получите JWT токен, который нужно передавать в заголовке Authorization в последующих запросах:
Authorization: Bearer your_jwt_token_here
Получение списка пользователей и данных конкретного пользователя через REST API
Чтобы получить список пользователей, отправьте GET-запрос на эндпоинт /wp-json/wp/v2/users. Запрос требует авторизации с правами администратора.
Пример запроса с curl:
curl -X GET https://example.com/wp-json/wp/v2/users \
-H "Authorization: Bearer your_jwt_token_here"
Ответом будет JSON-массив с пользователями и их данными (ID, имя, email, роли и др.).
Для получения данных конкретного пользователя используйте тот же эндпоинт с ID пользователя, например:
GET https://example.com/wp-json/wp/v2/users/15
Создание нового пользователя через REST API
Для создания пользователя отправляйте POST-запрос на /wp-json/wp/v2/users с телом запроса, содержащим обязательные поля, например:
{
"username": "newuser",
"email": "newuser@example.com",
"password": "strongpassword",
"roles": ["subscriber"]
}
Пример curl-запроса:
curl -X POST https://example.com/wp-json/wp/v2/users \
-H "Authorization: Bearer your_jwt_token_here" \
-H "Content-Type: application/json" \
-d '{"username":"newuser","email":"newuser@example.com","password":"strongpassword","roles":["subscriber"]}'
Обратите внимание, что в стандартном WordPress REST API создание пользователя доступно только для администратора.
Обновление данных пользователя через REST API
Для обновления информации пользователя используйте метод PATCH или PUT на эндпоинт /wp-json/wp/v2/users/{id}. Например, чтобы изменить email и роль пользователя с ID 15:
curl -X PATCH https://example.com/wp-json/wp/v2/users/15 \
-H "Authorization: Bearer your_jwt_token_here" \
-H "Content-Type: application/json" \
-d '{"email":"updated@example.com","roles":["editor"]}'
В теле можно передавать любые поддерживаемые поля, такие как display_name, nickname, description и т.д.
Удаление пользователя через REST API
Удаление пользователя осуществляется запросом DELETE на /wp-json/wp/v2/users/{id}. По умолчанию требуется админ-права.
Пример запроса:
curl -X DELETE https://example.com/wp-json/wp/v2/users/15 \
-H "Authorization: Bearer your_jwt_token_here" \
-H "Content-Type: application/json"
При удалении можно указать параметр reassign для переназначения постов пользователя другому пользователю:
curl -X DELETE "https://example.com/wp-json/wp/v2/users/15?reassign=1" \
-H "Authorization: Bearer your_jwt_token_here"
Расширение REST API для управления дополнительными полями пользователя
Если вам нужно работать с пользовательскими мета-полями, их можно зарегистрировать в REST API с помощью хука rest_api_init и функции register_rest_field. Например, добавим поле "phone" в ответ API:
add_action('rest_api_init', function() {
register_rest_field('user', 'phone', [
'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' => [
'description' => 'User phone number',
'type' => 'string',
'context' => ['view', 'edit'],
],
]);
});
После чего при запросе пользователя будет выдаваться поле phone, а при обновлении можно менять его через REST API.
Полезные плагины для работы с REST API пользователей
- JWT Auth for WP — добавляет JWT аутентификацию для REST API.
- Clearfy Pro — помогает оптимизировать и обезопасить работу REST API и сайт в целом.
Заключение
Управление пользователями через WordPress REST API — мощный инструмент для разработчиков, позволяющий создавать кастомные решения и интеграции. Важно правильно настроить аутентификацию и права доступа, чтобы обеспечить безопасность сайта. При необходимости расширения стандартных функций REST API легко реализуется через хуки и кастомные поля.
Рекомендуется использовать JWT аутентификацию, чтобы удобно работать с API из внешних приложений, а также подключать проверенные плагины, например, из набора WPSHOP.