Как использовать REST API для создания кастомных эндпоинтов в WordPress

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

Что такое кастомные эндпоинты REST API в WordPress и зачем они нужны

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

Создавая кастомный эндпоинт, мы можем:

  • Возвращать данные, которых нет в стандартном API.
  • Обрабатывать сложную логику на сервере.
  • Создавать безопасные точки входа для AJAX-запросов или внешних сервисов.
  • Интегрировать WordPress с мобильными приложениями и SPA.

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

Регистрация кастомного эндпоинта: базовый пример

Для создания кастомного эндпоинта используем функцию register_rest_route, которую вызываем в хук rest_api_init. Ниже простой пример, который регистрирует маршрут /wpsource/v1/hello и возвращает приветственное сообщение.

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

function wpsource_restapi_hello_callback() {
    return array('message' => 'Привет от WpSource REST API!');
}

После добавления этого кода в файл functions.php или в отдельный плагин, запрос по адресу https://ваш-сайт.ru/wp-json/wpsource/v1/hello вернёт JSON с сообщением.

Передача параметров и валидация данных

Реальные задачи требуют передачи параметров. Например, получим приветствие с именем пользователя, переданным в запросе. Добавим параметр name и валидируем его.

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

function wpsource_restapi_greet_callback($request) {
    $name = sanitize_text_field($request->get_param('name'));
    return array('message' => "Привет, {$name}!");
}

Теперь, сделав запрос https://ваш-сайт.ru/wp-json/wpsource/v1/greet?name=Иван, получим ответ с персональным приветствием.

Кастомный эндпоинт для получения данных из кастомного типа записей

Предположим, у вас на сайте есть кастомный тип записей product. Создадим эндпоинт, который вернёт список продуктов с названием и ценой (поле _price хранится в мета-данных).

add_action('rest_api_init', function () {
    register_rest_route('wpsource/v1', '/products', array(
        'methods' => 'GET',
        'callback' => 'wpsource_restapi_get_products',
    ));
});

function wpsource_restapi_get_products() {
    $args = array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'numberposts' => 10,
    );
    $posts = get_posts($args);
    $data = array();
    foreach ($posts as $post) {
        $price = get_post_meta($post->ID, '_price', true);
        $data[] = array(
            'id' => $post->ID,
            'title' => get_the_title($post),
            'price' => $price ? floatval($price) : null,
        );
    }
    return $data;
}

Этот эндпоинт поможет интегрировать товары с внешним сервисом или вывести их в кастомном фронтенде.

Аутентификация и права доступа для REST API

Очень важно контролировать, кто может обращаться к вашим кастомным эндпоинтам, особенно если они могут изменять данные. WordPress поддерживает несколько способов аутентификации, включая cookie, OAuth и JWT.

В параметрах register_rest_route можно указать параметр permission_callback, который проверит права доступа.

add_action('rest_api_init', function () {
    register_rest_route('wpsource/v1', '/private-data', array(
        'methods' => 'GET',
        'callback' => 'wpsource_restapi_private_data',
        'permission_callback' => function () {
            return current_user_can('read');
        },
    ));
});

function wpsource_restapi_private_data() {
    return array('secret' => 'Это закрытые данные, доступны только авторизованным пользователям');
}

Такой подход защитит ваши данные от несанкционированного доступа.

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

Для упрощения работы с REST API можно использовать плагины:

  • Clearfy Pro — оптимизация и защита API.
  • WPRemark — расширение функционала комментариев с поддержкой REST.

Также рекомендуем внимательно тестировать свои эндпоинты с помощью Postman или встроенного REST API тестера в браузере.

Заключение

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

Как добавить собственные поля в WordPress без плагинов
10.11.2025
Динамические отзывы с подтверждением покупателей в WordPress: практическое руководство
12.04.2026
Как запретить роботам индексировать страницы архива в WordPress
20.02.2026
Как удалить метаданные из изображений в WordPress для ускорения сайта
03.02.2026
Как сделать автоматическое изменяемое меню в WordPress
18.01.2026