Как использовать REST API WordPress для создания плагинов

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

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

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

В контексте разработки плагинов REST API позволяет:

  • Создавать собственные эндпоинты для работы с данными плагина.
  • Обеспечивать взаимодействие с фронтендом без перезагрузок страниц.
  • Расширять стандартный функционал WordPress удобным и безопасным способом.

Без понимания REST API сложно создавать современные и эффективные расширения.

Регистрация собственного REST API маршрута в плагине

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

В файле плагина добавим следующий код:

add_action('rest_api_init', 'wpscan_register_tips_route');
function wpscan_register_tips_route() {
    register_rest_route('wpscan/v1', '/tips', array(
        'methods' => 'GET',
        'callback' => 'wpscan_get_tips',
        'permission_callback' => '__return_true', // Сделаем публичным
    ));
}

function wpscan_get_tips(WP_REST_Request $request) {
    $tips = array(
        array('id' => 1, 'text' => 'Регулярно обновляйте WordPress и плагины.'),
        array('id' => 2, 'text' => 'Используйте сложные пароли для всех пользователей.'),
        array('id' => 3, 'text' => 'Ограничивайте количество попыток входа в админку.'),
    );
    return rest_ensure_response($tips);
}

Этот код создаёт маршрут /wp-json/wpscan/v1/tips, который возвращает список советов в формате JSON. Метод wpscan_get_tips формирует массив данных и возвращает его через функцию rest_ensure_response.

Объяснение параметров register_rest_route

register_rest_route принимает три параметра:

  • пространство имён: здесь wpscan/v1 — версия API и уникальный префикс.
  • маршрут: строка пути, в данном случае /tips.
  • массив аргументов: указываем HTTP методы, функцию-обработчик и callback для проверки прав.

Для проверки прав тут стоит использовать более надёжные методы, мы применили __return_true для простоты, но в продакшене надо защитить эндпоинты.

Обработка POST-запросов и получение данных с клиента

Давайте расширим плагин, чтобы принимать новые советы через POST-запрос.

add_action('rest_api_init', 'wpscan_register_add_tip_route');
function wpscan_register_add_tip_route() {
    register_rest_route('wpscan/v1', '/tips', array(
        'methods' => 'POST',
        'callback' => 'wpscan_add_tip',
        'permission_callback' => function() {
            return current_user_can('edit_posts'); // Только авторизованные с правом редактирования
        },
        'args' => array(
            'text' => array(
                'required' => true,
                'validate_callback' => function($param, $request, $key) {
                    return is_string($param) && !empty($param);
                }
            ),
        ),
    ));
}

function wpscan_add_tip(WP_REST_Request $request) {
    $text = sanitize_text_field($request->get_param('text'));
    // Здесь логика сохранения в базу, для примера просто возвращаем
    return rest_ensure_response(array('status' => 'success', 'message' => 'Совет добавлен', 'tip' => $text));
}

Теперь ваш плагин может принимать данные text через POST, проверять права пользователя и валидировать входящие данные.

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

Пример интеграции REST API с JavaScript фронтендом

Для демонстрации, как с фронтенда обращаться к нашим маршрутам, приведём пример на jQuery:

jQuery(document).ready(function($) {
    // Получаем список советов
    $.getJSON('/wp-json/wpscan/v1/tips', function(data) {
        data.forEach(function(tip) {
            $('#tips-list').append('<li>' + tip.text + '</li>');
        });
    });

    // Отправляем новый совет
    $('#add-tip-form').on('submit', function(e) {
        e.preventDefault();
        var tipText = $('#tip-text').val();
        $.ajax({
            url: '/wp-json/wpscan/v1/tips',
            method: 'POST',
            data: {text: tipText},
            beforeSend: function(xhr) {
                xhr.setRequestHeader('X-WP-Nonce', wpscanApi.nonce);
            },
            success: function(response) {
                alert(response.message);
                $('#tip-text').val('');
            },
            error: function() {
                alert('Ошибка при добавлении совета');
            }
        });
    });
});

Обратите внимание, что для POST-запросов требуется nonce (число, используемое один раз) для безопасности. Не забудьте локализовать скрипт в PHP и передать nonce:

wp_localize_script('wpscan-script', 'wpscanApi', array(
    'nonce' => wp_create_nonce('wp_rest')
));

Обеспечение безопасности REST API в собственных маршрутах

Безопасность — ключевой момент при работе с REST API. Важно:

  • Использовать permission_callback для проверки прав доступа.
  • Проводить валидацию и санитайзинг входящих данных.
  • Использовать Nonce или авторизацию через OAuth/Basic Auth для защищённых запросов.

Например, чтобы ограничить доступ к маршруту только администраторам, можно применить:

'permission_callback' => function() {
    return current_user_can('administrator');
}

Это гарантирует, что только администраторы смогут получить или изменить данные через API.

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

Для удобства разработки и тестирования есть несколько плагинов, которые помогут:

  • WP REST API Controller — позволяет управлять доступом к REST API через интерфейс.
  • REST API Toolbox — добавляет дополнительные возможности настройки и расширения API.
  • Postman (внешний инструмент) — популярный клиент для тестирования API-запросов.

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

Заключение

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

Как удалить заблокированные и замедленные заказы WooCommerce с помощью кода
29.05.2026
WooCommerce: как почистить метаданные товаров и оптимизировать базу данных
09.06.2026
Как настроить отправку писем WordPress через SMTP: плагины и примеры кода
21.02.2026
Как защитить WordPress от фейковых регистраций и ботов: практические методы и примеры
09.03.2026
Как удалить неиспользуемые таблицы в базе данных WordPress
12.03.2026