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

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

Что такое REST API в WordPress и зачем он нужен

WordPress REST API — это набор стандартных маршрутов и эндпоинтов, которые предоставляют доступ к данным сайта в формате JSON. Это позволяет получать, создавать, обновлять и удалять контент программно через HTTP-запросы.

REST API полезен, если вы хотите:

  • Создать одностраничное приложение (SPA) на React, Vue или Angular, которое обращается к WordPress как к бекенду.
  • Разработать мобильное приложение, получающее данные с сайта без полной загрузки страниц.
  • Интегрировать WordPress с внешними сервисами, автоматизировать задачи.
  • Добавить собственные REST-эндпоинты для кастомного функционала.

Начиная с версии 4.7, WordPress имеет встроенный REST API, который покрывает стандартные типы записей, пользователей, комментариев и таксономий.

Как создавать собственные эндпоинты REST API в WordPress

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

Например, создадим эндпоинт, который вернёт список последних 5 пользовательских отзывов, хранящихся в кастомном типе записи wp_pro_review.

add_action('rest_api_init', 'wp_pro_register_review_endpoint');
function wp_pro_register_review_endpoint() {
    register_rest_route('wp-pro/v1', '/reviews', array(
        'methods' => 'GET',
        'callback' => 'wp_pro_get_reviews',
        'permission_callback' => '__return_true',
    ));
}

function wp_pro_get_reviews() {
    $args = array(
        'post_type' => 'wp_pro_review',
        'posts_per_page' => 5,
        'post_status' => 'publish',
    );
    $query = new WP_Query($args);
    $reviews = array();
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $reviews[] = array(
                'id' => get_the_ID(),
                'title' => get_the_title(),
                'content' => get_the_content(),
                'date' => get_the_date('c'),
            );
        }
        wp_reset_postdata();
    }
    return $reviews;
}

Теперь запрос GET /wp-json/wp-pro/v1/reviews вернёт JSON с последними 5 отзывами.

Обработка параметров запроса

Можно принимать параметры, например, количество отзывов через GET-параметр count. Для этого добавим в register_rest_route схему аргументов.

register_rest_route('wp-pro/v1', '/reviews', array(
    'methods' => 'GET',
    'callback' => 'wp_pro_get_reviews',
    'permission_callback' => '__return_true',
    'args' => array(
        'count' => array(
            'required' => false,
            'default' => 5,
            'validate_callback' => function($param, $request, $key) {
                return is_numeric($param) && $param > 0 && $param <= 20;
            }
        ),
    ),
));

function wp_pro_get_reviews(WP_REST_Request $request) {
    $count = (int) $request->get_param('count');
    $args = array(
        'post_type' => 'wp_pro_review',
        'posts_per_page' => $count,
        'post_status' => 'publish',
    );
    $query = new WP_Query($args);
    $reviews = array();
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $reviews[] = array(
                'id' => get_the_ID(),
                'title' => get_the_title(),
                'content' => get_the_content(),
                'date' => get_the_date('c'),
            );
        }
        wp_reset_postdata();
    }
    return $reviews;
}

Работа с безопасностью и аутентификацией в REST API

По умолчанию публичные эндпоинты доступны всем, но для изменения данных или получения приватной информации нужно реализовать проверку прав пользователя.

Для этого в permission_callback возвращают true или false в зависимости от прав. Например, чтобы разрешить доступ только администраторам:

function wp_pro_permission_check() {
    return current_user_can('manage_options');
}

register_rest_route('wp-pro/v1', '/secure-data', array(
    'methods' => 'GET',
    'callback' => 'wp_pro_get_secure_data',
    'permission_callback' => 'wp_pro_permission_check',
));

Для аутентификации можно использовать cookie, nonce или внешние методы (OAuth, JWT). Популярный плагин для JWT — JWT Authentication for WP REST API.

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

Для упрощения разработки и расширения возможностей REST API рекомендую следующие плагины:

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

Пример расширения REST API для кастомных полей ACF

Если у вас есть кастомные поля, созданные через ACF, и вы хотите, чтобы они отображались в REST API, используйте следующий код:

add_action('rest_api_init', function () {
    register_rest_field('post', 'wp_pro_custom_field', array(
        'get_callback' => function ($post) {
            return get_field('wp_pro_custom_field', $post['id']);
        },
        'schema' => array(
            'description' => 'Кастомное поле от ACF',
            'type' => 'string',
        ),
    ));
});

Это позволит при запросе GET /wp-json/wp/v2/posts видеть в ответе поле wp_pro_custom_field.

Отладка и тестирование REST API в WordPress

Для проверки ваших эндпоинтов используйте инструменты типа Postman, Insomnia или встроенную консоль браузера. Также полезно включить логирование ошибок и использовать плагин Query Monitor для выявления проблем.

Не забывайте использовать правильные заголовки, например Content-Type: application/json и передавать данные в формате JSON при POST/PUT запросах.

Заключение

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

Как использовать REST API в WordPress для создания, настройки и расширения
17.11.2025
WooCommerce: настройка подтверждения отзывов через email для улучшения качества и надежности
28.04.2026
Как добавить произвольные поля в комментарии WordPress
26.12.2025
Как добавить произвольные поля в регистрацию WordPress с примером кода
05.02.2026
Как удалить пустые термины в таксономии WordPress
27.03.2026