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

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

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

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

Однако стандартные эндпоинты (например, для постов, страниц, пользователей) не всегда охватывают все бизнес-задачи. Поэтому создание собственных эндпоинтов позволяет:

  • Реализовать уникальную логику обработки данных.
  • Предоставить кастомный набор данных клиенту.
  • Организовать взаимодействие с нестандартными типами контента и метаданными.

Далее мы рассмотрим, как это сделать на практике.

Создание собственного REST API эндпоинта: пошаговое руководство

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

Для начала нам нужно зарегистрировать маршрут (endpoint) через хук rest_api_init. Пример кода для регистрации простого эндпоинта, который возвращает список популярных постов:

add_action('rest_api_init', function () {
    register_rest_route('wppuzzle/v1', '/popular-posts/', array(
        'methods' => 'GET',
        'callback' => 'wppuzzle_get_popular_posts',
        'permission_callback' => '__return_true',
    ));
});

function wppuzzle_get_popular_posts($request) {
    $args = array(
        'posts_per_page' => 5,
        'meta_key' => 'post_views_count',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
    );
    $query = new WP_Query($args);
    $posts = array();
    while ($query->have_posts()) {
        $query->the_post();
        $posts[] = array(
            'id' => get_the_ID(),
            'title' => get_the_title(),
            'link' => get_permalink(),
        );
    }
    wp_reset_postdata();
    return rest_ensure_response($posts);
}

В этом примере мы зарегистрировали маршрут /wp-json/wppuzzle/v1/popular-posts/, который по GET-запросу возвращает топ-5 постов с максимальным количеством просмотров (предполагается, что у вас есть мета-поле post_views_count).

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

REST API позволяет передавать параметры для фильтрации, пагинации и других целей. Добавим параметр posts_per_page для настройки количества выводимых постов:

add_action('rest_api_init', function () {
    register_rest_route('wppuzzle/v1', '/popular-posts/', array(
        'methods' => 'GET',
        'callback' => 'wppuzzle_get_popular_posts',
        'permission_callback' => '__return_true',
        'args' => array(
            'posts_per_page' => array(
                'validate_callback' => function($param, $request, $key) {
                    return is_numeric($param) && $param > 0 && $param <= 20;
                },
                'default' => 5,
            ),
        ),
    ));
});

function wppuzzle_get_popular_posts($request) {
    $posts_per_page = (int) $request->get_param('posts_per_page');
    $args = array(
        'posts_per_page' => $posts_per_page,
        'meta_key' => 'post_views_count',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
    );
    $query = new WP_Query($args);
    $posts = array();
    while ($query->have_posts()) {
        $query->the_post();
        $posts[] = array(
            'id' => get_the_ID(),
            'title' => get_the_title(),
            'link' => get_permalink(),
        );
    }
    wp_reset_postdata();
    return rest_ensure_response($posts);
}

Теперь клиент может управлять количеством возвращаемых записей, передавая параметр в URL, например: /wp-json/wppuzzle/v1/popular-posts/?posts_per_page=10.

Обеспечение безопасности и прав доступа для собственных эндпоинтов

Очень важно контролировать, кто и что может делать через REST API. В параметре permission_callback мы можем указать проверку прав пользователя или токена авторизации.

Например, если эндпоинт должен быть доступен только авторизованным пользователям с ролью 'editor' или выше, используйте такой код:

function wppuzzle_permission_check() {
    return current_user_can('edit_others_posts');
}

add_action('rest_api_init', function () {
    register_rest_route('wppuzzle/v1', '/secure-data/', array(
        'methods' => 'GET',
        'callback' => 'wppuzzle_get_secure_data',
        'permission_callback' => 'wppuzzle_permission_check',
    ));
});

function wppuzzle_get_secure_data() {
    return rest_ensure_response(array('secret' => 'Это защищенные данные'));
}

Без правильной проверки ваши эндпоинты могут стать уязвимыми для посторонних, что приведет к утечкам данных или нарушению работы сайта.

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

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

  • Clearfy Pro — оптимизация и защита REST API, отключение неиспользуемых эндпоинтов.
  • WPRemark — расширение для отзывов с поддержкой REST API.
  • WPStories — интеграция сторис с API.

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

Лучшие практики и рекомендации при создании собственных REST API эндпоинтов

Используйте префиксы и версии API

Чтобы избежать конфликтов с другими плагинами и будущими обновлениями, обязательно используйте уникальные префиксы для ваших маршрутов, например, wppuzzle/v1. Нумерация версий поможет плавно развивать API без разрыва совместимости.

Валидация и санитизация входящих данных

Всегда проверяйте и фильтруйте параметры запроса с помощью validate_callback и функций WordPress для очистки данных. Это защитит от некорректного ввода и атак.

Пагинация и ограничение результатов

Если ваш эндпоинт возвращает большие объёмы данных, реализуйте пагинацию и ограничение максимального количества записей, чтобы не перегружать сервер и клиент.

Документируйте API

Поддержка понятной документации для ваших эндпоинтов поможет другим разработчикам использовать их правильно и эффективно.

Заключение

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

Как создать плагин для WordPress с настройками
19.11.2025
Как удалить или изменить тексты ошибок в формах WordPress
09.02.2026
Как использовать Advanced Custom Fields для создания комплексных форм в WordPress
17.01.2026
Автоматическое удаление старых transient данных в WordPress
16.02.2026
Как использовать REST API для создания собственных эндпоинтов в WordPress
11.01.2026