Как использовать 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 без потери полезных страниц
22.08.2026
WooCommerce: автоматическое возврат средств после отмены заказа
10.06.2026
Как изменить адрес AJAX в WordPress без перезагрузки страницы
15.01.2026
Как создать свой шорткод в WordPress: практические примеры и советы
13.11.2025
Как сделать автоматический rollback обновлений WordPress при ошибках
11.02.2026