В этой статье рассмотрим, как с помощью собственного метода WPONE REST API получать данные пользователя в WordPress. Такой подход полезен для создания кастомных приложений, мобильных клиентов или динамичных фронтенд-интерфейсов, которым необходима информация о пользователях сайта.
Что такое WPONE REST API и зачем создавать собственные методы
WordPress имеет встроенный REST API, который позволяет взаимодействовать с сайтом через HTTP-запросы и получать данные в формате JSON. Однако стандартные эндпоинты не всегда покрывают все задачи, особенно если нужны специфичные данные или обработка.
Создание собственного метода REST API расширяет возможности и позволяет возвращать именно ту информацию, которая нужна. В частности, метод WPONE REST API — это пример реализации собственного эндпоинта с префиксом «wpone», чтобы избежать конфликтов и лучше структурировать код.
Такой метод полезен, если нужно безопасно и удобно получать данные о текущем пользователе или любом другом, с учетом прав доступа.
Создаем собственный метод WPONE REST API для получения данных пользователя
Начнем с регистрации собственного маршрута в REST API. Для этого используем хук rest_api_init и функцию register_rest_route. Обязательно добавим проверку прав.
add_action('rest_api_init', function() {
register_rest_route('wpone/v1', '/user/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'wpone_get_user_data',
'permission_callback' => function () {
return current_user_can('read');
}
));
});
function wpone_get_user_data($request) {
$user_id = (int) $request['id'];
$user = get_userdata($user_id);
if (!$user) {
return new WP_Error('no_user', 'Пользователь не найден', array('status' => 404));
}
// Формируем массив с нужными данными
$data = array(
'ID' => $user->ID,
'user_login' => $user->user_login,
'user_email' => $user->user_email,
'display_name' => $user->display_name,
'roles' => $user->roles
);
return rest_ensure_response($data);
}В этом примере создан маршрут /wpone/v1/user/<id>, который возвращает данные пользователя по ID. Обратите внимание на проверку прав — запрос сможет выполнить только пользователь с правом read (обычно авторизованные).
Пояснения к коду
- Хук
rest_api_initвызывается при инициализации REST API. - Параметр
permission_callbackотвечает за авторизацию запроса. - Функция
get_userdataполучает объект пользователя по ID. - Возвращаемые данные ограничены, чтобы не раскрывать конфиденциальную информацию.
Пример вызова метода WPONE REST API на клиенте с помощью AJAX
Для использования созданного метода на фронтенде можно сделать AJAX-запрос с помощью JavaScript. Пример ниже демонстрирует, как получить и вывести имя пользователя по ID.
fetch('/wp-json/wpone/v1/user/1')
.then(response => {
if (!response.ok) {
throw new Error('Ошибка сети');
}
return response.json();
})
.then(data => {
console.log('Данные пользователя:', data);
document.getElementById('user-name').textContent = data.display_name;
})
.catch(error => {
console.error('Ошибка:', error);
});В HTML достаточно иметь элемент с ID user-name для вывода имени.
Использование плагина Clearfy Pro для улучшения безопасности REST API
Если вы используете плагин Clearfy Pro, он позволяет гибко настраивать доступ к REST API и отключать ненужные эндпоинты, что повышает безопасность сайта.
Рекомендуется после создания собственных методов ограничивать доступ к стандартным маршрутам, если они не нужны, чтобы минимизировать риски.
Расширение метода: получение данных текущего пользователя
Иногда нужно получить данные именно текущей сессии пользователя, без указания ID. Для этого сделаем отдельный маршрут:
add_action('rest_api_init', function() {
register_rest_route('wpone/v1', '/current-user', array(
'methods' => 'GET',
'callback' => 'wpone_get_current_user_data',
'permission_callback' => function () {
return is_user_logged_in();
}
));
});
function wpone_get_current_user_data() {
$user = wp_get_current_user();
if ($user->ID === 0) {
return new WP_Error('no_current_user', 'Пользователь не авторизован', array('status' => 401));
}
return rest_ensure_response(array(
'ID' => $user->ID,
'user_login' => $user->user_login,
'user_email' => $user->user_email,
'display_name' => $user->display_name,
'roles' => $user->roles
));
}Теперь запрос к /wp-json/wpone/v1/current-user вернет данные текущего пользователя, если он залогинен.
Выводы и рекомендации по работе с WPONE REST API
Создание собственных методов REST API на WordPress — мощный инструмент, который поможет адаптировать сайт под любые задачи. Важно использовать префиксы, проверять права доступа и не раскрывать лишних данных.
Для удобства можно объединять несколько методов в один namespace (wpone/v1), а также использовать WPNonce для дополнительной защиты AJAX-запросов.
Также советую ознакомиться с плагином WPCommunity для создания приватных и защищенных сообществ, где REST API играет важную роль.
Таким образом, вы сможете эффективно и безопасно получать данные пользователей через WPONE REST API, строя гибкие и современные решения на WordPress.