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

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

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

REST API — это интерфейс программирования приложений, основанный на архитектуре REST, который позволяет обращаться к данным сайта через стандартные HTTP-методы: GET, POST, PUT, DELETE и др. В WordPress REST API встроен из коробки начиная с версии 4.7 и обеспечивает доступ к записям, страницам, пользователям, комментариям и другим типам данных.

Основные преимущества использования REST API:

  • Позволяет создавать SPA (одностраничные приложения) на React, Vue и других фреймворках;
  • Упрощает интеграцию с мобильными приложениями;
  • Облегчает создание кастомных интерфейсов и панелей администрирования;
  • Позволяет расширять функционал сайта без вмешательства в шаблоны.

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

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

Рассмотрим пример создания собственного эндпоинта, который будет возвращать список последних пяти кастомных записей типа portfolio с дополнительным полем project_url.

add_action('rest_api_init', function () {
    register_rest_route('wp-shablon/v1', '/portfolio/', array(
        'methods' => 'GET',
        'callback' => 'wp_shablon_get_portfolio',
        'permission_callback' => '__return_true',
    ));
});

function wp_shablon_get_portfolio() {
    $args = array(
        'post_type' => 'portfolio',
        'posts_per_page' => 5,
        'post_status' => 'publish'
    );
    $query = new WP_Query($args);
    $items = array();
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $items[] = array(
                'id' => get_the_ID(),
                'title' => get_the_title(),
                'link' => get_permalink(),
                'project_url' => get_post_meta(get_the_ID(), 'project_url', true),
            );
        }
        wp_reset_postdata();
    }
    return $items;
}

В данном коде мы регистрируем новый маршрут /wp-shablon/v1/portfolio/, который при GET-запросе вернёт массив из пяти последних записей типа portfolio. Обработчик wp_shablon_get_portfolio формирует ответ с нужными полями.

Разбор параметров register_rest_route

Первый параметр — пространство имён API, его стоит делать уникальным для вашего проекта, например, используя приставку домена. Второй параметр — путь маршрута. Третий — массив параметров, в котором задаются методы, callback-функция и функция проверки прав доступа.

Функция permission_callback отвечает за безопасность: она должна проверять, можно ли текущему пользователю выполнять запрос. В нашем примере мы позволили всем обращаться к эндпоинту, но для приватных данных нужно реализовать проверку.

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

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

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

Использование этих плагинов позволяет быстрее создавать надёжные и удобные API без глубокого погружения в детали безопасности и формата данных.

Практическое применение REST API: интеграция с внешним приложением

Представим ситуацию, когда нужно вывести последние новости сайта WordPress в мобильном приложении на React Native. Для этого мобильное приложение будет обращаться к стандартному REST API эндпоинту WordPress /wp-json/wp/v2/posts.

Пример запроса с помощью fetch:

fetch('https://wp-shablon.ru/wp-json/wp/v2/posts?per_page=5')
  .then(response => response.json())
  .then(data => {
    console.log(data); // Обрабатываем полученные записи
  })
  .catch(error => console.error(error));

Если нужно получать дополнительные данные, например, поля ACF, то стоит установить плагин ACF to REST API. После этого данные будут включены в ответ, и их можно будет использовать в приложении.

Обработка POST-запросов для создания записей

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

add_action('rest_api_init', function () {
    register_rest_route('wp-shablon/v1', '/reviews/', array(
        'methods' => 'POST',
        'callback' => 'wp_shablon_create_review',
        'permission_callback' => function () {
            return is_user_logged_in();
        },
        'args' => array(
            'title' => array('required' => true),
            'content' => array('required' => true),
            'rating' => array('required' => true),
        ),
    ));
});

function wp_shablon_create_review(WP_REST_Request $request) {
    $title = sanitize_text_field($request->get_param('title'));
    $content = sanitize_textarea_field($request->get_param('content'));
    $rating = intval($request->get_param('rating'));

    $post_id = wp_insert_post(array(
        'post_title' => $title,
        'post_content' => $content,
        'post_type' => 'review',
        'post_status' => 'pending',
        'post_author' => get_current_user_id(),
    ));

    if (is_wp_error($post_id)) {
        return new WP_Error('cannot_create', 'Не удалось создать отзыв', array('status' => 500));
    }

    update_post_meta($post_id, 'rating', $rating);

    return array('success' => true, 'id' => $post_id);
}

В этом примере создаётся эндпоинт /wp-shablon/v1/reviews/, который принимает POST-запрос с параметрами title, content и rating. Запись создаётся с типом review и статусом ожидания модерации.

Безопасность и аутентификация в REST API WordPress

Очень важно обеспечить безопасность при работе с REST API, особенно если вы позволяете создавать или изменять данные через API. Основные моменты:

  • Используйте функции проверки прав доступа (permission_callback), чтобы ограничить доступ к закрытым эндпоинтам;
  • Для аутентификации используйте стандартные методы WordPress — cookie, nonce, а для внешних приложений — OAuth, JWT;
  • Санитизируйте все входящие данные, не доверяйте клиенту;
  • Регулярно обновляйте WordPress и плагины для защиты от уязвимостей.

Для аутентификации с внешних приложений удобно использовать плагин JWT Authentication for WP REST API, который позволяет передавать токен в заголовках запроса.

Пример заголовка с JWT для авторизации

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...

После успешной аутентификации пользователь получает токен и может выполнять защищённые операции через API.

Выводы по использованию REST API в WordPress

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

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

Как добавить динамические поля в формы WordPress с помощью ACF
12.03.2026
Как отладить проблемы с отображением CSS в WordPress
18.12.2025
Как изменить текст, выводимый в meta description WordPress без плагинов
05.01.2026
Как создать свой плагин WordPress: пошаговое руководство
10.11.2025
Как использовать мета-записи в WordPress для сохранения дополнительных данных
08.12.2025