WP REST API — мощный инструмент для взаимодействия с WordPress через HTTP-запросы. Он позволяет создавать, читать, обновлять и удалять данные сайта, включая пользователей. В этой статье разберём, как работать с пользователями через WP REST API, какие возможности доступны, а также приведём практические примеры кода для реализации управления пользователями на вашем сайте.
Что такое WP REST API и зачем использовать его для управления пользователями
WP REST API встроен в ядро WordPress с версии 4.7 и предоставляет удобный интерфейс для работы с данными сайта. В частности, вы можете управлять пользователями — получать список, создавать новых, обновлять данные и удалять пользователей. Это удобно, если вы хотите интегрировать WordPress с внешними приложениями, мобильными устройствами или автоматизировать администрирование.
Преимущества использования REST API для пользователей:
- Доступ к данным через стандартные HTTP-запросы (GET, POST, PUT, DELETE).
- Возможность интеграции с внешними сервисами и приложениями.
- Гибкое управление правами доступа через аутентификацию.
- Автоматизация массовых операций с пользователями.
Ограничения и безопасность при работе с пользователями через REST API
Работа с пользователями — чувствительная задача. Важно ограничить доступ к API только авторизованным и проверенным пользователям с соответствующими правами. По умолчанию, эндпоинт для пользователей доступен только администраторам и редакторам, а для чтения — только аутентифицированным. Без правильной аутентификации операции создания, обновления и удаления пользователей невозможны.
Рекомендуется использовать такие методы аутентификации, как OAuth, Basic Auth через HTTPS или JWT. Для удобства разработки можно применять плагины, например, WPGPT поддерживает работу с API и может помочь в интеграциях.
Основные эндпоинты WP REST API для пользователей WordPress
Для работы с пользователями в WP REST API используется маршрут /wp/v2/users. Ниже перечислены основные запросы:
GET /wp/v2/users— получить список пользователей.GET /wp/v2/users/<id>— получить данные конкретного пользователя.POST /wp/v2/users— создать нового пользователя.PUT /wp/v2/users/<id>— обновить данные пользователя.DELETE /wp/v2/users/<id>— удалить пользователя.
Каждый запрос требует соответствующей аутентификации и прав.
Пример: Получение списка пользователей
Для получения списка пользователей сделаем GET-запрос к /wp/v2/users. В ответе будет JSON-массив с данными пользователей.
curl -X GET https://example.com/wp-json/wp/v2/users -u admin:password
Ответ будет содержать ID, имя, email и роли пользователей.
Пример: Создание нового пользователя через REST API
Ниже пример запроса для создания пользователя с помощью PHP и функции wpwebsite_create_user_via_api:
function wpwebsite_create_user_via_api($username, $email, $password) {
$url = 'https://example.com/wp-json/wp/v2/users';
$data = [
'username' => $username,
'email' => $email,
'password' => $password,
'roles' => ['subscriber']
];
$args = [
'headers' => [
'Authorization' => 'Basic ' . base64_encode('admin:password'),
'Content-Type' => 'application/json',
],
'body' => json_encode($data),
'method' => 'POST',
];
$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
return $response->get_error_message();
}
return json_decode(wp_remote_retrieve_body($response));
}
Этот код отправит POST-запрос, создаст пользователя и вернёт ответ сервера.
Расширение возможностей: добавление пользовательских полей через REST API
Иногда необходимо работать с дополнительными данными пользователей. Для этого можно добавить пользовательские поля (meta) и открыть их для REST API.
Пример регистрации пользовательского поля phone_number, доступного через REST API:
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) {
if (!current_user_can('edit_user', $user->ID)) {
return;
}
update_user_meta($user->ID, 'phone_number', sanitize_text_field($value));
},
'schema' => [
'description' => 'Номер телефона пользователя',
'type' => 'string',
'context' => ['view', 'edit'],
],
]);
});
Теперь при GET-запросе к пользователю в ответе появится поле phone_number, а при POST/PUT его можно менять.
Практическое применение: фильтрация пользователей по дополнительным полям
С помощью WP REST API можно реализовать фильтрацию пользователей по метаполям. Для этого потребуется расширить запросы и добавить параметры в эндпоинт. Это удобно, если, например, нужно вывести только пользователей с определённым номером телефона или другой метаинформацией.
Плагины для расширенного управления пользователями через REST API
Если хотите упростить работу с REST API для пользователей, можно использовать специализированные плагины:
- WP REST User — расширяет возможности API для пользователей, добавляет удобные эндпоинты.
- JWT Authentication for WP REST API — добавляет поддержку JWT для безопасной аутентификации.
- Clearfy Pro — оптимизирует работу сайта и API, повышая безопасность и производительность.
Например, Clearfy Pro поможет защитить REST API от неавторизованных запросов и настроить права доступа.
Заключение
Управление пользователями через WP REST API — отличный способ автоматизировать задачи и интегрировать WordPress с внешними системами. Главное — обеспечить правильную аутентификацию и права доступа, а также при необходимости расширить API дополнительными полями и фильтрами. Используйте приведённые примеры как основу для своих проектов и развивайте функционал под задачи вашего сайта.