WordPress REST API предоставляет мощный инструмент для взаимодействия с сайтом через HTTP-запросы. В этой статье мы подробно рассмотрим, как использовать REST API для получения данных о пользователях WordPress. Это актуально для разработчиков, которым нужно интегрировать данные пользователей в сторонние приложения или создавать кастомные интерфейсы.
Основы REST API в WordPress: что нужно знать о пользователях
REST API в WordPress позволяет получать, создавать, обновлять и удалять данные через стандартные HTTP-методы (GET, POST, PUT, DELETE). Для работы с пользователями есть стандартные эндпоинты, но по умолчанию доступ к пользовательским данным ограничен из соображений безопасности.
Чтобы получить список пользователей через REST API, используется запрос на URL /wp-json/wp/v2/users. Однако без аутентификации вы получите минимальный набор данных или ошибку доступа.
Поэтому важно правильно настроить аутентификацию и права доступа, чтобы получать нужные данные безопасно.
Аутентификация для работы с пользовательскими данными
Для доступа к REST API с расширенными правами обычно применяются следующие методы:
- Basic Auth — простой способ, подходит для разработки, но не для продакшена;
- OAuth — более сложный, но безопасный метод;
- JWT (JSON Web Token) — современный, удобный для SPA и мобильных приложений.
Для начала мы рассмотрим базовую аутентификацию, а затем пример с JWT.
Пример запроса с Basic Auth для получения списка пользователей
Для использования Basic Auth потребуется установить плагин Basic Auth или использовать собственную реализацию.
Пример запроса с помощью curl:
curl --user "username:password" https://example.com/wp-json/wp/v2/users
Замените username и password на данные администратора или пользователя с правами доступа.
Ответ будет в формате JSON с данными пользователей: id, имя, URL, описание и т.д.
Реализация функции wpcommunity_get_users_rest для собственного эндпоинта
Если нужно вывести свои данные или ограничить поля, можно создать кастомный эндпоинт. Пример функции для добавления нового маршрута:
add_action('rest_api_init', function () {
register_rest_route('wpcommunity/v1', '/users', array(
'methods' => 'GET',
'callback' => 'wpcommunity_get_users_rest',
'permission_callback' => function () {
return current_user_can('list_users');
},
));
});
function wpcommunity_get_users_rest(WP_REST_Request $request) {
$args = array('number' => 10);
$users = get_users($args);
$data = array();
foreach ($users as $user) {
$data[] = array(
'ID' => $user->ID,
'login' => $user->user_login,
'name' => $user->display_name,
'email' => $user->user_email,
);
}
return rest_ensure_response($data);
}
Этот код создаст эндпоинт /wp-json/wpcommunity/v1/users, который вернёт 10 пользователей с базовыми данными. Доступ разрешён только пользователям с правами list_users.
Использование JWT для безопасной аутентификации
JWT-токены позволяют безопасно аутентифицировать REST API запросы без постоянной передачи логина и пароля. Для WordPress есть популярный плагин JWT Authentication for WP REST API, который легко настроить.
Алгоритм работы следующий:
- Пользователь отправляет логин и пароль, получает JWT-токен;
- В последующих запросах передаёт токен в заголовке
Authorization: Bearer <token>; - Сервер проверяет токен и предоставляют доступ к данным.
Пример запроса на получение токена:
curl -X POST https://example.com/wp-json/jwt-auth/v1/token \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"password123"}'
После получения токена можно сделать запрос к защищённому эндпоинту:
curl https://example.com/wp-json/wpcommunity/v1/users \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
Реальные кейсы использования REST API для работы с пользователями
Знание, как получать данные пользователей через REST API, полезно в различных ситуациях:
- Создание кастомных панелей управления или мобильных приложений, где нужно отображать список пользователей;
- Интеграция с CRM-системами для синхронизации пользователей;
- Автоматизация и экспорт данных для аналитики;
- Расширенные фильтры и поиск пользователей без загрузки админ-панели.
В каждом случае стоит помнить про безопасность и минимизацию передаваемых данных, чтобы не раскрывать лишнюю информацию.
Фильтрация и пагинация пользователей через REST API
В примере с кастомным эндпоинтом можно добавить параметры запроса для фильтрации и пагинации:
function wpcommunity_get_users_rest(WP_REST_Request $request) {
$number = $request->get_param('number') ?: 10;
$offset = $request->get_param('offset') ?: 0;
$search = $request->get_param('search');
$args = array(
'number' => $number,
'offset' => $offset,
);
if ($search) {
$args['search'] = '*' . esc_attr($search) . '*';
$args['search_columns'] = array('user_login', 'user_email', 'display_name');
}
$users = get_users($args);
$data = array();
foreach ($users as $user) {
$data[] = array(
'ID' => $user->ID,
'login' => $user->user_login,
'name' => $user->display_name,
'email' => $user->user_email,
);
}
return rest_ensure_response($data);
}
Теперь вы можете делать запросы с параметрами ?number=5&offset=10&search=john для гибкой выборки.
Рекомендации по безопасности при работе с REST API и пользователями
При работе с пользовательскими данными важно соблюдать следующие правила:
- Используйте аутентификацию (JWT, OAuth), чтобы никто неавторизованный не получал доступ;
- Минимизируйте раскрываемую информацию, не отправляйте пароли, мета-данные, если они не нужны;
- Используйте
permission_callbackв register_rest_route для проверки прав; - Регулярно обновляйте WordPress и используемые плагины для безопасности.
Следуя этим советам, вы сможете безопасно и эффективно использовать REST API для работы с пользователями на вашем сайте.