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

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

Что такое REST API в WordPress и зачем нужны нестандартные запросы

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

Например, если у вас есть кастомный тип записи с метаполями, а стандартный эндпоинт не возвращает нужные данные, можно добавить свои поля и фильтры. Либо сделать собственный маршрут (endpoint), который будет выполнять сложные запросы и возвращать данные в нужном формате.

Такой подход полезен для создания SPA, мобильных приложений, интеграций с внешними сервисами и любых проектов, которым нужен доступ к данным WordPress через API.

Расширение стандартных эндпоинтов: добавление своих полей к ответу

Чтобы в ответе REST API появились дополнительные данные, например, метаполя или пользовательские таксономии, можно зарегистрировать новые поля с помощью функции register_rest_field. Это позволит получать нужную информацию без создания нового маршрута.

Пример: добавление метаполя 'wptem_rating' к постам

function wptem_register_custom_rest_field() {
    register_rest_field('post', 'wptem_rating', array(
        'get_callback' => function($post) {
            return get_post_meta($post['id'], 'wptem_rating', true);
        },
        'schema' => null,
    ));
}
add_action('rest_api_init', 'wptem_register_custom_rest_field');

Теперь при запросе /wp-json/wp/v2/posts в ответе появится поле wptem_rating с нужным значением.

Создание собственного REST API маршрута для сложных запросов

Если стандартных эндпоинтов недостаточно, можно создать собственный маршрут, который будет обрабатывать запросы и возвращать данные в нужном формате. Это особенно полезно, когда нужно выполнить сложную логику выборки или объединить разные типы данных.

Пример: маршрут для получения постов с рейтингом выше заданного значения

function wptem_register_custom_route() {
    register_rest_route('wptem/v1', '/top-posts/(?P<min_rating>\d+)', array(
        'methods' => 'GET',
        'callback' => 'wptem_get_top_posts',
        'args' => array(
            'min_rating' => array(
                'validate_callback' => 'is_numeric',
            ),
        ),
    ));
}
add_action('rest_api_init', 'wptem_register_custom_route');

function wptem_get_top_posts($request) {
    $min_rating = intval($request['min_rating']);

    $query = new WP_Query(array(
        'post_type' => 'post',
        'meta_query' => array(
            array(
                'key' => 'wptem_rating',
                'value' => $min_rating,
                'compare' => '>=',
                'type' => 'NUMERIC',
            ),
        ),
        'posts_per_page' => 10,
    ));

    $posts = array();
    foreach ($query->posts as $post) {
        $posts[] = array(
            'id' => $post->ID,
            'title' => $post->post_title,
            'rating' => get_post_meta($post->ID, 'wptem_rating', true),
            'link' => get_permalink($post->ID),
        );
    }

    return rest_ensure_response($posts);
}

Запрос к /wp-json/wptem/v1/top-posts/4 вернёт 10 постов с рейтингом 4 и выше.

Практические советы по безопасности и производительности при работе с REST API

При создании своих маршрутов важно учитывать безопасность. Например, если данные чувствительные, нужно проверять права пользователя через current_user_can() или аутентификацию. Также стоит ограничивать количество возвращаемых записей, чтобы избежать больших нагрузок на сервер.

Для кеширования ответов можно использовать transient API или плагины кэширования, чтобы не запускать тяжелые запросы слишком часто.

Если нужны фильтры по сложным параметрам, лучше использовать WP_Query с мета-запросами и таксономиями, а не писать прямые SQL-запросы, чтобы сохранить совместимость и безопасность.

Полезные плагины для работы с REST API в WordPress

Есть несколько плагинов, которые помогут расширить возможности REST API без написания кода:

  • WP REST API Controller — удобный интерфейс для управления доступными эндпоинтами и полями.
  • ACF to REST API — добавляет поля Advanced Custom Fields в REST API ответы.
  • JWT Authentication for WP REST API — позволяет реализовать авторизацию через JWT для защищённых запросов.
  • Clearfy Pro — оптимизирует и расширяет REST API, улучшая безопасность и производительность.

Выбирайте плагины в зависимости от задачи. Например, для работы с ACF и REST API отлично подойдёт ACF to REST API.

Заключение

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

Как динамически изменять заголовки страниц в WordPress
18.12.2025
WooCommerce: автоматическое удаление неактивных корзин и заказов
02.06.2026
Автоматическая отмена неоплаченных заказов в WooCommerce
14.06.2026
WooCommerce: автоматическое удаление товаров без заказов через заданный период
26.04.2026
Оптимизация кэша и кеширование в WordPress: лучшие практики и инструменты
08.11.2025