Как использовать REST API в WordPress: практическое руководство

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

REST API — это современный способ взаимодействия с сайтом WordPress через HTTP-запросы. Он позволяет получать, создавать, обновлять и удалять данные сайта программно, что открывает возможности для создания мобильных приложений, SPA (Single Page Application), интеграции с внешними сервисами и кастомных админ-панелей.

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

В этом руководстве мы подробно рассмотрим, как создавать собственные REST API маршруты на WordPress, как работать с аутентификацией, как возвращать данные и обрабатывать запросы.

Создание собственного REST API маршрута в WordPress

Регистрация маршрута (endpoint)

Для регистрации собственного REST API маршрута используется функция register_rest_route. Она вызывается обычно на хук rest_api_init. Рассмотрим пример кода, который регистрирует маршрут /wpkey/v1/hello и возвращает простое приветствие.

add_action('rest_api_init', function () {
    register_rest_route('wpkey/v1', '/hello', [
        'methods' => 'GET',
        'callback' => 'wpkey_hello_callback',
    ]);
});

function wpkey_hello_callback(WP_REST_Request $request) {
    return ['message' => 'Привет от WPKey!'];
}

В этом примере мы создали GET-эндпоинт, который возвращает JSON с полем message. Чтобы вызвать этот API, нужно отправить GET-запрос на https://ваш-сайт/wp-json/wpkey/v1/hello.

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

Часто нужно передавать параметры в запросе. Рассмотрим пример, где мы принимаем параметр name и возвращаем персональное приветствие.

add_action('rest_api_init', function () {
    register_rest_route('wpkey/v1', '/greet', [
        'methods' => 'GET',
        'callback' => 'wpkey_greet_callback',
        'args' => [
            'name' => [
                'required' => true,
                'validate_callback' => function ($param) {
                    return is_string($param) && !empty($param);
                }
            ]
        ]
    ]);
});

function wpkey_greet_callback(WP_REST_Request $request) {
    $name = $request->get_param('name');
    return ['message' => 'Привет, ' . sanitize_text_field($name) . '!'];
}

Теперь запрос /wp-json/wpkey/v1/greet?name=Иван вернет {"message":"Привет, Иван!"}.

Работа с данными WordPress через REST API

Получение постов с помощью собственного эндпоинта

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

add_action('rest_api_init', function () {
    register_rest_route('wpkey/v1', '/latest-posts', [
        'methods' => 'GET',
        'callback' => 'wpkey_latest_posts_callback',
    ]);
});

function wpkey_latest_posts_callback(WP_REST_Request $request) {
    $args = [
        'numberposts' => 5,
        'post_status' => 'publish'
    ];
    $posts = get_posts($args);
    $data = [];
    foreach ($posts as $post) {
        $data[] = [
            'id' => $post->ID,
            'title' => get_the_title($post),
            'link' => get_permalink($post)
        ];
    }
    return $data;
}

Это удобный способ предоставить внешний системе или приложению доступ к свежему контенту вашего сайта без использования стандартных REST маршрутов.

Создание и обновление постов через REST API

Для изменения данных через REST API требуется аутентификация и более сложная логика. Ниже пример обработки POST-запроса для создания нового поста. В этом примере мы используем базовую проверку прав пользователя.

add_action('rest_api_init', function () {
    register_rest_route('wpkey/v1', '/create-post', [
        'methods' => 'POST',
        'callback' => 'wpkey_create_post_callback',
        'permission_callback' => function () {
            return current_user_can('edit_posts');
        },
        'args' => [
            'title' => ['required' => true],
            'content' => ['required' => true],
        ]
    ]);
});

function wpkey_create_post_callback(WP_REST_Request $request) {
    $title = sanitize_text_field($request->get_param('title'));
    $content = wp_kses_post($request->get_param('content'));

    $post_id = wp_insert_post([
        'post_title' => $title,
        'post_content' => $content,
        'post_status' => 'publish',
        'post_author' => get_current_user_id(),
    ]);

    if (is_wp_error($post_id)) {
        return new WP_Error('post_creation_failed', 'Ошибка при создании поста', ['status' => 500]);
    }

    return ['post_id' => $post_id, 'message' => 'Пост успешно создан'];
}

Чтобы использовать этот эндпоинт, необходимо отправить POST-запрос с авторизацией (например, через cookie авторизации или JWT). В теле запроса должны быть поля title и content.

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

Для расширения возможностей REST API можно использовать готовые плагины. Вот несколько полезных:

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

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

Особенности безопасности при работе с REST API

При создании собственных маршрутов важно уделять внимание безопасности. Вот несколько рекомендаций:

  • Используйте permission_callback для проверки прав доступа. Не оставляйте публичные endpoint без ограничений, если они изменяют данные.
  • Валидация и очистка данных — обязательно фильтруйте входящие параметры, чтобы избежать XSS и SQL-инъекций.
  • Аутентификация — применяйте современные методы, например, JWT, OAuth или cookie-авторизацию.
  • Логирование ошибок и мониторинг — чтобы быстро выявлять и исправлять проблемы.

Безопасность — это ключевой момент при открытии API наружу.

Выводы и советы для разработчиков

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

Начинайте с простых GET-запросов, постепенно добавляйте сложность, не забывайте про тестирование и документацию. Используйте плагины для упрощения аутентификации и расширения функционала. Такой подход позволит создать гибкую, масштабируемую и безопасную систему API для вашего сайта на WordPress.

Как создать динамические шорткоды в WordPress с поддержкой параметров
16.02.2026
WooCommerce: автоматическое удаление неоплаченных заказов по таймауту
03.06.2026
Как создать автоматический бэкап WordPress без плагинов
28.12.2025
Как изменить URL для страниц библиотеки медиа WordPress
15.01.2026
WooCommerce: автоматическое изменение статуса заказа при отсутствии оплаты
16.05.2026

Ресурс в разработке, скоро здесь будет сайт по вордпресс