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

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

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

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

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

Создание собственного REST API эндпоинта в WordPress

Регистрация кастомного маршрута

Чтобы добавить свой собственный REST API маршрут, нужно использовать функцию register_rest_route. Она регистрируется в хуке rest_api_init. Рассмотрим пример, где мы создадим эндпоинт, который возвращает список последних 5 записей определённого типа.

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

function wpcoder_get_latest_posts() {
    $args = array(
        'posts_per_page' => 5,
        'post_status' => 'publish',
    );
    $posts = get_posts($args);
    $data = array();
    foreach ($posts as $post) {
        $data[] = array(
            'id' => $post->ID,
            'title' => get_the_title($post->ID),
            'date' => get_the_date('', $post->ID),
            'link' => get_permalink($post->ID),
        );
    }
    return rest_ensure_response($data);
}

Теперь при запросе GET к /wp-json/wpcoder/v1/latest-posts/ вы получите JSON с последними записями. Это простой и мощный способ получить данные для фронтенда.

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

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

register_rest_route('wpcoder/v1', '/posts/', array(
    'methods' => 'GET',
    'callback' => 'wpcoder_get_posts_by_category',
    'args' => array(
        'category' => array(
            'required' => true,
            'validate_callback' => function($param) {
                return is_numeric($param);
            }
        ),
    ),
    'permission_callback' => '__return_true',
));

function wpcoder_get_posts_by_category($request) {
    $category_id = $request->get_param('category');
    $query = new WP_Query(array(
        'cat' => $category_id,
        'posts_per_page' => 10,
        'post_status' => 'publish',
    ));
    $posts = array();
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $posts[] = array(
                'id' => get_the_ID(),
                'title' => get_the_title(),
                'link' => get_permalink(),
            );
        }
        wp_reset_postdata();
    }
    return rest_ensure_response($posts);
}

Теперь запрос /wp-json/wpcoder/v1/posts?category=3 вернёт 10 постов из категории с ID 3.

Работа с REST API через плагины для упрощения задач

Если вы не хотите писать код вручную, существуют плагины, которые значительно облегчают работу с REST API.

Advanced Custom Fields (ACF) и ACF to REST API

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

WP REST API Controller

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

Custom Endpoints by WPCoder

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

Примеры использования REST API в реальных проектах

Создание SPA на React с использованием WordPress как бэкенда

REST API позволяет отделить фронтенд от бэкенда. Например, можно создать одностраничное приложение (SPA) на React, которое обращается к WordPress через REST API для получения контента, комментариев и формирования интерфейса.

Для этого достаточно сделать GET-запросы к стандартным эндпоинтам /wp-json/wp/v2/posts или к вашим кастомным маршрутам, которые мы рассматривали выше.

Интеграция с мобильными приложениями

Мобильные приложения часто требуют динамического контента. REST API — лучший способ обеспечить безопасность и гибкость передачи данных между приложением и сайтом на WordPress.

Правильно настроенные эндпоинты с проверкой прав доступа помогут создавать персонализированные и интерактивные мобильные решения.

Автоматизация и взаимодействие с внешними сервисами

REST API можно использовать для автоматического обновления контента, интеграции с CRM, сервисами рассылок и другими внешними системами. Это позволяет строить сложные бизнес-процессы на базе WordPress.

Безопасность REST API: что важно учитывать

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

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

register_rest_route('wpcoder/v1', '/private-data/', array(
    'methods' => 'GET',
    'callback' => 'wpcoder_get_private_data',
    'permission_callback' => function() {
        return is_user_logged_in();
    },
));

Также стоит использовать nonce и другие методы валидации данных, особенно при изменении информации через POST или PUT запросы.

Фильтрация и валидация данных

Обязательно проверяйте и очищайте все входящие данные и параметры запроса. Используйте функции sanitize_text_field, intval и другие для предотвращения инъекций и ошибок.

Логи и мониторинг

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

Как использовать REST API в WordPress для расширения функциональности
10.11.2025
Автоматическое удаление неиспользуемых метаполей в WordPress
22.03.2026
Успешная интеграция WooCommerce с Битрикс24 в WordPress
10.01.2026
Как создать собственный плагин для автоматизации задач в WordPress
28.03.2026
Как удалить или сбросить пароль в WordPress через базу данных MySQL
17.04.2026