Как использовать REST API WordPress для получения пользовательских данных

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, который легко настроить.

Алгоритм работы следующий:

  1. Пользователь отправляет логин и пароль, получает JWT-токен;
  2. В последующих запросах передаёт токен в заголовке Authorization: Bearer <token>;
  3. Сервер проверяет токен и предоставляют доступ к данным.

Пример запроса на получение токена:

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 для работы с пользователями на вашем сайте.

Удаление пустых записей в termmeta WordPress: оптимизация базы данных
09.12.2025
Как избежать проблем с переадресацией (редиректами) в WordPress
13.11.2025
Как установить ограничение на регистрацию в WordPress по домену e-mail
20.03.2026
Как избежать проблем с кэшированием в WordPress
27.11.2025
Автоматическое изменение цены товара WooCommerce по атрибуту
17.04.2026

Задать вопрос о вордпресс, получить ответ - это все можно сделать в нашем сообществе WP. Сайт в данный момент в разработке, изучите ссылки ниже: