Как добавить кастомный REST API endpoint в WordPress с примером кода

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

Что такое REST API endpoint в WordPress и зачем создавать кастомный?

REST API endpoint — это URL, на который можно отправлять запросы (GET, POST, DELETE и др.) для получения или изменения данных. WordPress по умолчанию предоставляет много эндпоинтов, например, для получения постов, таксономий, пользователей и т.д.

Однако, если у вас есть уникальные данные или логика, которую нужно предоставить через API, то стоит создавать кастомный endpoint. Это позволяет интегрировать WordPress с внешними сервисами, создавать мобильные приложения, расширять функционал сайта.

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

  • Вывод кастомных метаданных о постах или пользователях.
  • Прием данных из внешних форм или приложений.
  • Автоматизация задач, например, массовое обновление данных.
  • Интеграция с внешними CRM, ERP, или другими сервисами.

Добавление кастомного REST API endpoint в WordPress: пошаговое руководство

Для регистрации собственного endpoint используется хук rest_api_init и функция register_rest_route(). Ниже пошагово разберем процесс.

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

Создаем функцию для регистрации маршрута и вешаем на хук rest_api_init:

add_action('rest_api_init', 'wprus_register_custom_endpoint');

function wprus_register_custom_endpoint() {
    register_rest_route('wprus/v1', '/data/', array(
        'methods' => 'GET',
        'callback' => 'wprus_handle_custom_endpoint',
        'permission_callback' => '__return_true', // В дальнейшем замените на проверку прав
    ));
}

Здесь wprus/v1 — пространство имён API, /data/ — путь эндпоинта, а wprus_handle_custom_endpoint — функция-обработчик.

2. Обработка запроса и возврат данных

Функция-обработчик получает объект запроса WP_REST_Request и должна вернуть данные в формате массива или объекта, которые WordPress конвертирует в JSON:

function wprus_handle_custom_endpoint(WP_REST_Request $request) {
    // Можно получить параметры запроса
    $param = $request->get_param('example_param');

    // Логика обработки
    $data = array(
        'message' => 'Привет от кастомного REST API!',
        'received_param' => $param
    );

    return rest_ensure_response($data);
}

3. Проверка прав доступа

В параметре permission_callback нужно указать функцию, которая проверит, имеет ли текущий пользователь право выполнять этот запрос. Для публичных данных можно вернуть true, но для операций с изменением данных — обязательно проверяйте права:

function wprus_check_permission() {
    return current_user_can('edit_posts');
}

register_rest_route('wprus/v1', '/data/', array(
    'methods' => 'POST',
    'callback' => 'wprus_handle_custom_endpoint',
    'permission_callback' => 'wprus_check_permission',
));

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

Создадим endpoint /wprus/v1/recent-posts/, который вернет последние 5 постов с дополнительным кастомным полем subtitle.

add_action('rest_api_init', function () {
    register_rest_route('wprus/v1', '/recent-posts/', array(
        'methods' => 'GET',
        'callback' => 'wprus_get_recent_posts',
        'permission_callback' => '__return_true',
    ));
});

function wprus_get_recent_posts() {
    $args = array(
        'numberposts' => 5,
        'post_status' => 'publish',
    );
    $posts = get_posts($args);
    $data = array();

    foreach ($posts as $post) {
        $subtitle = get_post_meta($post->ID, 'subtitle', true);
        $data[] = array(
            'id' => $post->ID,
            'title' => get_the_title($post),
            'subtitle' => $subtitle,
            'date' => get_the_date('', $post),
            'link' => get_permalink($post),
        );
    }

    return rest_ensure_response($data);
}

Лучшие практики и советы по работе с кастомными REST API в WordPress

Безопасность и права доступа

Обязательно проверяйте права доступа, особенно если ваш endpoint изменяет данные или возвращает конфиденциальную информацию. Используйте permission_callback и функции current_user_can() или is_user_logged_in().

Санитизация и валидация данных

Если ваш endpoint принимает параметры, валидируйте и санитизируйте их. Можно использовать аргумент args в register_rest_route() для описания параметров и их правил.

Кэширование ответов

Для снижения нагрузки на сервер можно использовать кэширование ответов, например, transient API или внешние кэш-сервисы. Особенно актуально для GET-запросов.

Документирование API

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

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

  • Clearfy Pro — оптимизация безопасности и управление REST API.
  • WPGPT — расширение возможностей API с помощью ИИ.

Заключение

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

Как добавить кастомный REST API endpoint в WordPress с примером кода
07.03.2026
Как автоматизировать удаление старых ревизий в WordPress
09.01.2026
Как использовать WP Cron в WordPress для автоматизации задач
27.03.2026
WooCommerce: как изменить стиль кнопки «Добавить в корзину» при добавлении товара
02.05.2026
Как избежать проблем с перемещением менеджера медиа в WordPress
29.12.2025
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше