Как использовать REST API WordPress для запроса пользователей по мета-полям

|

WordPress предоставляет мощный REST API, который позволяет разработчикам получать и изменять данные сайта через HTTP-запросы. Однако, стандартный эндпоинт для пользователей не поддерживает фильтрацию по мета-полям из коробки. В этой статье мы разберём, как расширить REST API WordPress, чтобы можно было запрашивать пользователей с фильтрацией по произвольным мета-полям, что особенно полезно для проектов с кастомизацией профилей или сложной логикой доступа.

Почему фильтрация пользователей по мета-полям важна

В стандартном WordPress пользовательские мета-поля (user meta) широко используются для хранения дополнительной информации — например, роли, статуса, настроек или других данных. Часто возникает задача получить именно тех пользователей, у которых задано определённое мета-значение. Это может быть полезно для:

Поэтому расширение REST API позволит сделать работу с пользователями более гибкой и удобной.

Как расширить REST API для фильтрации пользователей по мета-полям

По умолчанию в REST API WordPress можно получить список пользователей через эндпоинт /wp-json/wp/v2/users, но фильтрация по мета-полям не поддерживается. Чтобы добавить такую возможность, нам нужно:

  1. Зарегистрировать новый параметр запроса для эндпоинта пользователей;
  2. Добавить обработчик, который будет модифицировать WP_User_Query для фильтрации по мета-данным;
  3. Обеспечить безопасность и валидацию входных данных.

Пример кода: регистрация фильтра по мета-полю в REST API

add_action('rest_user_query', 'wpreboot_rest_filter_users_by_meta', 10, 2);
function wpreboot_rest_filter_users_by_meta($args, $request) {
    if (!empty($request['meta_key']) && !empty($request['meta_value'])) {
        $args['meta_query'] = array(
            array(
                'key' => sanitize_text_field($request['meta_key']),
                'value' => sanitize_text_field($request['meta_value']),
                'compare' => '=',
            ),
        );
    }
    return $args;
}

add_action('rest_api_init', function () {
    register_rest_route('wp/v2', '/users', array(
        'methods' => 'GET',
        'callback' => 'wpreboot_rest_get_users',
        'permission_callback' => function () {
            return current_user_can('list_users');
        },
        'args' => array(
            'meta_key' => array(
                'validate_callback' => 'rest_validate_request_arg',
            ),
            'meta_value' => array(
                'validate_callback' => 'rest_validate_request_arg',
            ),
        ),
    ));
});

function wpreboot_rest_get_users($request) {
    $args = array('number' => 10);
    $args = wpreboot_rest_filter_users_by_meta($args, $request);
    $user_query = new WP_User_Query($args);
    $users = array();
    foreach ($user_query->get_results() as $user) {
        $users[] = array(
            'id' => $user->ID,
            'login' => $user->user_login,
            'email' => $user->user_email,
        );
    }
    return rest_ensure_response($users);
}

Этот код добавляет возможность делать GET-запросы с параметрами meta_key и meta_value для фильтрации пользователей. Например, запрос:

GET /wp-json/wp/v2/users?meta_key=city&meta_value=Moscow

вернёт пользователей, у которых в мета-поле city указано значение Moscow.

Как использовать фильтрацию по мета-полям с плагинами из WPShop

Если вы используете плагины из WPShop, например, WPGPT или Expert Review, вы можете интегрировать расширенный REST API с их функционалом для выбора определённых пользователей в ваших кастомных сценариях. Это позволит, к примеру, автоматически формировать списки рецензентов или подписчиков с нужными параметрами и запускать на них нужные процессы с помощью API.

Дополнительные советы по безопасности и оптимизации

При расширении REST API важно не только добавить функциональность, но и позаботиться о безопасности и производительности:

Выводы

Расширение стандартного REST API WordPress для фильтрации пользователей по мета-полям открывает новые возможности для разработки сложных и гибких решений. Это полезно для кастомных проектов и интеграций с внешними сервисами. В статье мы рассмотрели конкретный пример реализации с кодом, который можно адаптировать под свои задачи и расширять.

Для удобства вы можете использовать плагины из WPShop и совмещать их с таким REST API для автоматизации различных процессов на сайте.

WooCommerce: как автоматически удалять отзывы о товарах через заданный период
30.04.2026
Как использовать REST API WordPress для создания приложений
12.11.2025
Как добавить дополнительный тип записей (Custom Post Type) в WordPress без плагинов
19.02.2026
Как сделать автоматическое удаление простых категорий в WordPress по условию
05.03.2026
Как удалить все посты из определённой категории в WordPress через код
30.01.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙