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

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

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

REST API — это набор URL-адресов (эндпоинтов), через которые можно получать, создавать, изменять и удалять данные на сайте WordPress с помощью HTTP-запросов. По сути, это интерфейс для взаимодействия с сайтом на уровне данных.

В WordPress с версии 4.7 REST API включён по умолчанию и поддерживает работу с постами, страницами, пользователями, таксономиями и другими стандартными сущностями.

Использование REST API позволяет:

  • Создавать собственные мобильные приложения, которые взаимодействуют с сайтом.
  • Разрабатывать SPA (Single Page Applications) на Vue, React или Angular, получая данные динамически.
  • Интегрировать WordPress с внешними сервисами и системами.
  • Создавать собственные эндпоинты для специфичных задач, которые не покрываются стандартным API.

Как зарегистрировать собственный эндпоинт в WPAll WordPress REST API

Для создания своего маршрута (эндпоинта) в REST API используется функция register_rest_route(). Она позволяет определить URL, методы запроса, уровень доступа и обработчик.

Рассмотрим пример создания эндпоинта, который возвращает список последних 5 постов с определённой категорией:

add_action('rest_api_init', 'wpall_register_custom_endpoint');
function wpall_register_custom_endpoint() {
    register_rest_route('wpall/v1', '/latest-posts/', array(
        'methods' => 'GET',
        'callback' => 'wpall_get_latest_posts',
        'permission_callback' => '__return_true',
    ));
}

function wpall_get_latest_posts(WP_REST_Request $request) {
    $args = array(
        'posts_per_page' => 5,
        'category_name' => 'news',
        'post_status' => 'publish',
    );
    $posts = get_posts($args);
    $data = array();
    foreach ($posts as $post) {
        $data[] = array(
            'id' => $post->ID,
            'title' => get_the_title($post),
            'date' => get_the_date('', $post),
            'link' => get_permalink($post),
        );
    }
    return rest_ensure_response($data);
}

В этом коде мы добавляем маршрут /wp-json/wpall/v1/latest-posts/, который возвращает JSON с данными.

Обратите внимание на параметр permission_callback. Здесь стоит функция __return_true, что означает публичный доступ. Для защищённых данных нужно реализовать соответствующую проверку прав доступа.

Параметры и фильтрация запросов в REST API

Можно расширить эндпоинт, чтобы принимать параметры запроса. Например, добавить параметр category для фильтрации по категории:

function wpall_get_latest_posts(WP_REST_Request $request) {
    $category = $request->get_param('category') ?: 'news';
    $args = array(
        'posts_per_page' => 5,
        'category_name' => sanitize_text_field($category),
        'post_status' => 'publish',
    );
    // остальной код без изменений
}

Таким образом, клиент может запросить /wp-json/wpall/v1/latest-posts/?category=technology и получить посты из категории «technology».

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

REST API позволяет не только получать данные, но и создавать их. Рассмотрим пример эндпоинта для добавления нового поста через POST-запрос.

add_action('rest_api_init', 'wpall_register_post_create_endpoint');
function wpall_register_post_create_endpoint() {
    register_rest_route('wpall/v1', '/create-post/', array(
        'methods' => 'POST',
        'callback' => 'wpall_create_post',
        'permission_callback' => 'wpall_permission_check',
        'args' => array(
            'title' => array('required' => true),
            'content' => array('required' => true),
        ),
    ));
}

function wpall_create_post(WP_REST_Request $request) {
    $title = sanitize_text_field($request->get_param('title'));
    $content = sanitize_textarea_field($request->get_param('content'));
    
    $post_id = wp_insert_post(array(
        'post_title' => $title,
        'post_content' => $content,
        'post_status' => 'draft',
        'post_type' => 'post',
        'post_author' => get_current_user_id(),
    ));

    if (is_wp_error($post_id)) {
        return new WP_Error('post_creation_failed', 'Ошибка при создании поста', array('status' => 500));
    }

    return rest_ensure_response(array('post_id' => $post_id, 'message' => 'Пост создан и находится в статусе черновика'));
}

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

В примере проверяется, что пользователь имеет право редактировать посты, данные очищаются, и создаётся пост в статусе «черновик».

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

Хотя WordPress предоставляет базовые возможности работы с REST API, для удобства разработки и расширения часто используют дополнительные плагины:

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

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

Советы по безопасности при работе с REST API в WPAll WordPress

Работая с REST API, важно не забывать о безопасности. Вот несколько рекомендаций:

  • Всегда проверяйте права доступа в permission_callback, особенно для запросов, изменяющих данные.
  • Санитизируйте и валидируйте все входящие данные, избегая SQL-инъекций и XSS.
  • Для авторизации используйте надежные методы, например, OAuth или JWT.
  • Ограничьте количество запросов и используйте кэширование для снижения нагрузки.

Эти меры помогут защитить сайт от нежелательных действий и атак.

Как отлаживать и тестировать REST API эндпоинты

Для тестирования REST API удобно использовать инструменты, такие как Postman или Insomnia. Они позволяют отправлять GET, POST, PUT, DELETE запросы, устанавливать заголовки и параметры.

Также полезно включать логирование ошибок на сервере, использовать WP_DEBUG и плагины для мониторинга запросов.

Если нужно отследить работу конкретного обработчика, можно добавить временный вывод в лог с помощью error_log():

function wpall_get_latest_posts(WP_REST_Request $request) {
    error_log('REST API wpall_get_latest_posts вызван');
    // основной код
}

Так вы убедитесь, что функция вызывается и получите данные для отладки.

Как создать динамические отзывы в WordPress с подтверждением
20.01.2026
WordPress авторизация по одноразовому паролю (OTP) с практическим применением
30.01.2026
Как создать свою систему отзывов с подтверждением в WordPress
24.12.2025
Как создать уникальный фильтрованный список постов в WordPress
18.11.2025
Как создать многоуровневую навигацию в WordPress с примерами кода
10.02.2026