Как использовать REST API в WordPress для создания уникальных функций

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

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

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

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

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

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

GET https://wponline.ru/wp-json/wp/v2/posts

Ответ приходит в формате JSON с данными постов.

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

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

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

Добавим следующий код в файл плагина или functions.php темы:

add_action('rest_api_init', function () {
    register_rest_route('wponline/v1', '/hello/', array(
        'methods' => 'GET',
        'callback' => 'wponline_hello_endpoint',
    ));
});

Здесь мы регистрируем маршрут /wp-json/wponline/v1/hello/ с методом GET, который вызывает функцию wponline_hello_endpoint.

Обработка запроса

Теперь создадим функцию-обработчик:

function wponline_hello_endpoint(WP_REST_Request $request) {
    return new WP_REST_Response(array(
        'message' => 'Привет от WPOnline REST API!'
    ), 200);
}

При обращении к эндпоинту вернётся JSON с сообщением.

Работа с параметрами запроса и валидация

Часто требуется принимать параметры для фильтрации или обработки данных. Рассмотрим пример с параметром name:

add_action('rest_api_init', function () {
    register_rest_route('wponline/v1', '/greet/', array(
        'methods' => 'GET',
        'callback' => 'wponline_greet_user',
        'args' => array(
            'name' => array(
                'required' => true,
                'validate_callback' => function($param, $request, $key) {
                    return is_string($param) && !empty($param);
                },
            ),
        ),
    ));
});

function wponline_greet_user(WP_REST_Request $request) {
    $name = sanitize_text_field($request->get_param('name'));
    return new WP_REST_Response(array(
        'message' => 'Привет, ' . $name . '! Добро пожаловать на wponline.ru.'
    ), 200);
}

В этом примере при запросе /wp-json/wponline/v1/greet/?name=Иван вернётся приветствие с именем пользователя.

Создание POST-запроса для добавления данных через REST API

Для обработки POST-запросов необходимо добавить соответствующий маршрут и реализовать сохранение данных. Допустим, мы хотим добавить заметку:

add_action('rest_api_init', function () {
    register_rest_route('wponline/v1', '/note/', array(
        'methods' => 'POST',
        'callback' => 'wponline_create_note',
        'permission_callback' => function () {
            return current_user_can('edit_posts');
        },
        'args' => array(
            'content' => array(
                'required' => true,
                'validate_callback' => function($param) {
                    return is_string($param) && !empty($param);
                },
            ),
        ),
    ));
});

function wponline_create_note(WP_REST_Request $request) {
    $content = sanitize_text_field($request->get_param('content'));
    $post_id = wp_insert_post(array(
        'post_title' => wp_trim_words($content, 5, '...'),
        'post_content' => $content,
        'post_status' => 'publish',
        'post_type' => 'note'
    ));
    if (is_wp_error($post_id)) {
        return new WP_REST_Response(array('error' => 'Ошибка при создании заметки'), 500);
    }
    return new WP_REST_Response(array('success' => true, 'id' => $post_id), 201);
}

Обратите внимание на permission_callback, который проверяет права текущего пользователя. Без этой проверки POST-запросы могут быть небезопасны.

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

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

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

Эти инструменты особенно полезны, если вы создаёте сложные приложения на базе WordPress.

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

Для тестирования API удобно использовать инструменты типа Postman или curl. Например, получить список постов можно так:

curl https://wponline.ru/wp-json/wp/v2/posts

А для вызова кастомного эндпоинта с параметром:

curl "https://wponline.ru/wp-json/wponline/v1/greet/?name=Алексей"

Для отладки также полезны плагины, которые логируют запросы, например Query Monitor.

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

При создании своих эндпоинтов важно учитывать безопасность:

  • Используйте permission_callback для проверки прав пользователя.
  • Обрабатывайте и валидируйте входящие данные.
  • Не открывайте критичные операции для всех пользователей.

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

Резюме: возможности REST API и примеры на практике

REST API открывает огромные возможности для интеграции, расширения и автоматизации WordPress-сайтов. В статье мы рассмотрели:

  • Основы работы с REST API.
  • Как создать кастомный эндпоинт с GET и POST методами.
  • Как принимать и валидировать параметры.
  • Плагины для упрощения работы с API.
  • Вопросы безопасности и отладки.

Используйте примеры из статьи, чтобы создавать собственные уникальные функции на базе WordPress REST API и делать сайты более функциональными и современными.

Авторизация по телефону в WordPress: пошаговое руководство
03.11.2025
Как установить собственный фильтр по пользовательским полям в WordPress
13.04.2026
WooCommerce: автоматическое отключение способов оплаты при проблемах с интернет-соединением
16.06.2026
Как добавить автоматическое удаление старых отзывов в WordPress
07.02.2026
Автоматическое удаление старых записей в WordPress по дате публикации
03.02.2026