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

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

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

REST API (Representational State Transfer Application Programming Interface) — это интерфейс взаимодействия, который позволяет приложениям обмениваться данными через HTTP-запросы. В WordPress с версии 4.7 REST API включён по умолчанию и предоставляет множество стандартных эндпоинтов для работы с постами, пользователями, комментариями и так далее.

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

  • Возможность создавать SPA (Single Page Applications) и мобильные приложения, которые взаимодействуют с сайтом.
  • Интеграция с внешними системами и сервисами через стандартизованные запросы.
  • Расширение функционала сайта за счёт создания собственных эндпоинтов и обработки данных.

Для разработчика это означает гибкость и удобство в построении сложных решений на базе WordPress.

Создание кастомных REST API эндпоинтов в WordPress

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

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

add_action('rest_api_init', 'wplite_register_custom_route');
function wplite_register_custom_route() {
    register_rest_route('wplite/v1', '/latest-posts/', array(
        'methods' => 'GET',
        'callback' => 'wplite_get_latest_posts',
        'permission_callback' => '__return_true',
    ));
}

function wplite_get_latest_posts( $request ) {
    $args = array(
        'numberposts' => 5,
        'post_status' => 'publish',
    );
    $posts = get_posts($args);
    $data = array();
    foreach ($posts as $post) {
        $data[] = array(
            'id' => $post->ID,
            'title' => get_the_title($post),
            'custom_field' => get_post_meta($post->ID, 'wplite_custom_field', true),
            'link' => get_permalink($post),
        );
    }
    return rest_ensure_response($data);
}

После добавления этого кода в файл functions.php или в собственный плагин, можно получить данные по адресу https://ваш-сайт.ru/wp-json/wplite/v1/latest-posts/.

Разбор кода и параметры

В функции wplite_register_custom_route мы регистрируем маршрут wplite/v1/latest-posts, который поддерживает только метод GET. Параметр permission_callback возвращает true, что позволяет обращаться к эндпоинту без авторизации.

В функции-обработчике wplite_get_latest_posts мы используем стандартный WP-функционал для извлечения последних 5 постов, после чего формируем массив с нужными данными, включая кастомное поле wplite_custom_field.

Примеры популярных плагинов для расширения REST API

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

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

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

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

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

Стандартные методы аутентификации в WP REST API включают:

  • Cookie-based (для авторизованных пользователей в браузере).
  • Basic Auth (не рекомендуется для продакшн из-за отсутствия шифрования).
  • JWT (JSON Web Token) — современный и безопасный метод, который требует установки дополнительного плагина.

Пример настройки проверочного колбэка с проверкой прав пользователя:

function wplite_permission_check( $request ) {
    return current_user_can('edit_posts');
}

add_action('rest_api_init', function () {
    register_rest_route('wplite/v1', '/secure-data/', array(
        'methods' => 'GET',
        'callback' => 'wplite_get_secure_data',
        'permission_callback' => 'wplite_permission_check',
    ));
});

Здесь эндпоинт wplite/v1/secure-data будет доступен только пользователям с правом edit_posts.

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

Рассмотрим сценарий, когда вам нужно создать мобильное приложение, которое отображает новости с вашего сайта на WordPress. Используя REST API, вы можете предоставить приложению JSON-данные, которые легко обрабатываются и отображаются.

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

Пример запроса с параметрами пагинации:

add_action('rest_api_init', 'wplite_register_paginated_posts');
function wplite_register_paginated_posts() {
    register_rest_route('wplite/v1', '/posts/', array(
        'methods' => 'GET',
        'callback' => 'wplite_get_paginated_posts',
        'permission_callback' => '__return_true',
    ));
}

function wplite_get_paginated_posts( $request ) {
    $page = $request->get_param('page') ? intval($request->get_param('page')) : 1;
    $per_page = 5;

    $args = array(
        'post_status' => 'publish',
        'posts_per_page' => $per_page,
        'paged' => $page,
    );

    $query = new WP_Query($args);
    $posts = array();

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $posts[] = array(
                'id' => get_the_ID(),
                'title' => get_the_title(),
                'excerpt' => get_the_excerpt(),
                'link' => get_permalink(),
            );
        }
        wp_reset_postdata();
    }

    $response = array(
        'posts' => $posts,
        'page' => $page,
        'max_pages' => $query->max_num_pages,
    );

    return rest_ensure_response($response);
}

Теперь вы можете запрашивать /wp-json/wplite/v1/posts/?page=2 и получать посты со второй страницы.

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

Для проверки работы REST API удобно использовать инструменты, такие как Postman или REST Client в VS Code. Они позволяют отправлять запросы с разными методами и параметрами, а также просматривать ответы и заголовки.

Кроме того, для отладки можно включить логирование ошибок или использовать плагины, которые расширяют возможности тестирования и мониторинга API.

Также полезно проверять права доступа и корректность возвращаемых данных, чтобы избежать проблем с безопасностью и стабильностью приложения.

Как удалить дубликаты продуктов WooCommerce с помощью кода
17.05.2026
Как отключить автопрозвон в WordPress при загрузке страницы
05.02.2026
Как настроить раздельные роли пользователей в WordPress с помощью кода
20.03.2026
Как использовать функции WooCommerce в WordPress для разработки
04.12.2025
Как удалить метаданные глобально в WordPress
07.03.2026