WordPress REST API открывает широкие возможности для работы с данными сайта через HTTP-запросы. В этой статье мы подробно разберём, как с помощью REST API можно управлять пользователями WordPress — получать список, создавать, обновлять и удалять пользователей. Это особенно полезно для интеграции сайта с внешними системами, мобильными приложениями или кастомными административными панелями.
Что такое REST API в WordPress и почему он полезен для работы с пользователями
REST API — это интерфейс, который позволяет взаимодействовать с WordPress через HTTP-запросы и получать ответы в формате JSON. По умолчанию WordPress предоставляет стандартный набор эндпоинтов для работы с постами, страницами, таксономиями и пользователями.
Управление пользователями через REST API позволяет автоматизировать задачи, например, массовое создание пользователей, обновление их ролей, или интеграцию с внешними CRM-системами. Это особенно актуально для крупных сайтов с большим количеством регистраций и ролей.
Однако стандартный REST API не всегда предоставляет полный функционал для всех нужд, поэтому часто приходится расширять его с помощью собственного кода и плагинов.
Получение списка пользователей через REST API WordPress
Для начала посмотрим, как получить список пользователей. По умолчанию в WordPress REST API есть эндпоинт:
GET /wp-json/wp/v2/users
Но доступ к нему ограничен правами — для получения списка пользователей пользователь должен иметь права на редактирование пользователей (обычно администратор). Пример запроса с использованием curl:
curl -u admin:password https://example.com/wp-json/wp/v2/users
Ответ будет в формате JSON с данными пользователей (ID, имя, URL, описание и т.д.).
Если нужно получить пользователей с определённой ролью, используйте параметр roles:
GET /wp-json/wp/v2/users?roles=subscriber
Это поможет фильтровать пользователей по ролям.
Создание и обновление пользователей через REST API с примерами кода
Для создания пользователя через REST API потребуется отправить POST-запрос на эндпоинт /wp-json/wp/v2/users с параметрами:
username— логин пользователя (обязательно)email— email (обязательно)password— пароль (обязательно)roles— роли (опционально)- и другие поля, например
first_name,last_name
Пример запроса на создание пользователя с использованием PHP и wp_remote_post:
function wplist_create_user_via_rest($user_data) {
$url = site_url('/wp-json/wp/v2/users');
$args = array(
'headers' => array(
'Authorization' => 'Basic ' . base64_encode('admin:password'),
'Content-Type' => 'application/json'
),
'body' => json_encode($user_data),
'method' => 'POST'
);
$response = wp_remote_post($url, $args);
if (is_wp_error($response)) {
return $response->get_error_message();
}
return json_decode(wp_remote_retrieve_body($response), true);
}
// Использование:
$user_data = array(
'username' => 'newuser',
'email' => 'newuser@example.com',
'password' => 'securePass123',
'roles' => ['subscriber']
);
$result = wplist_create_user_via_rest($user_data);
print_r($result);
Обновление пользователя происходит через PUT-запрос на /wp-json/wp/v2/users/{id} с аналогичными параметрами. Например, чтобы изменить email пользователя с ID 15:
function wplist_update_user_email($user_id, $new_email) {
$url = site_url('/wp-json/wp/v2/users/' . $user_id);
$args = array(
'headers' => array(
'Authorization' => 'Basic ' . base64_encode('admin:password'),
'Content-Type' => 'application/json'
),
'body' => json_encode(array('email' => $new_email)),
'method' => 'PUT'
);
$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
return $response->get_error_message();
}
return json_decode(wp_remote_retrieve_body($response), true);
}
// Использование:
$result = wplist_update_user_email(15, 'updatedemail@example.com');
print_r($result);
Обратите внимание, что для выполнения таких запросов нужны права администратора и правильная аутентификация.
Удаление пользователей через REST API и безопасность
Удаление пользователя через REST API делается запросом DELETE на эндпоинт /wp-json/wp/v2/users/{id}. Пример вызова:
DELETE /wp-json/wp/v2/users/15
Такой запрос также требует аутентификации с правами администратора. В PHP это будет выглядеть так:
function wplist_delete_user($user_id) {
$url = site_url('/wp-json/wp/v2/users/' . $user_id);
$args = array(
'headers' => array(
'Authorization' => 'Basic ' . base64_encode('admin:password')
),
'method' => 'DELETE'
);
$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
return $response->get_error_message();
}
return json_decode(wp_remote_retrieve_body($response), true);
}
// Использование:
$result = wplist_delete_user(15);
print_r($result);
Однако удаление пользователей — операция очень чувствительная. Для повышения безопасности стоит использовать OAuth 2.0, JWT аутентификацию или специальные плагины, такие как Clearfy Pro, который помогает усилить безопасность REST API и управлять разрешениями.
Расширение REST API для кастомных полей пользователей и ролей
Часто стандартного набора полей пользователей недостаточно — нужны кастомные метаполя. Для их работы через REST API нужно расширить ответ API, зарегистрировав дополнительные поля.
Пример добавления кастомного поля "phone" для пользователей:
add_action('rest_api_init', function () {
register_rest_field('user', 'phone', array(
'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' => array(
'description' => 'Телефон пользователя',
'type' => 'string',
'context' => array('view', 'edit')
),
));
});
Теперь при запросе пользователей в ответе будет дополнительное поле phone, а при создании или редактировании пользователя можно передавать это поле.
Это решение отлично подходит для расширения возможностей REST API под конкретные бизнес-задачи.
Плагины для удобной работы с REST API пользователей WordPress
Для упрощения работы с REST API и управления пользователями рекомендуем обратить внимание на следующие плагины:
- WP REST User — расширяет стандартные возможности API для пользователей, добавляет удобные эндпоинты.
- Clearfy Pro — повышает безопасность REST API, управляет доступом к данным.
- JWT Authentication for WP REST API — добавляет поддержку JWT токенов для аутентификации.
Все эти плагины можно найти и скачать на WPSHOP.RU. Они значительно упрощают разработку и обеспечивают безопасность при работе с REST API.
Выводы и рекомендации по работе с REST API пользователей
Работа с пользователями через REST API — мощный инструмент для автоматизации и интеграции. Однако важно уделять особое внимание безопасности: использовать надёжную аутентификацию, ограничивать доступ по правам и при необходимости расширять возможности API под свои задачи.
Если вы планируете использовать REST API для управления пользователями в продакшене, рекомендуем тестировать все сценарии на тестовом окружении и применять плагины для усиления безопасности.
Таким образом, REST API в WordPress — это гибкий и расширяемый инструмент, который при правильном использовании значительно упростит работу с пользователями вашего сайта.