Как создать и использовать REST API в WordPress: практическое руководство

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

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

REST API (Representational State Transfer Application Programming Interface) — это архитектурный стиль взаимодействия компонентов по протоколу HTTP. В WordPress REST API позволяет получать, создавать, изменять и удалять данные сайта через HTTP-запросы в формате JSON.

Использование REST API особенно актуально при создании SPA (Single Page Application), мобильных приложений, интеграции с внешними сервисами и кастомизации административной панели.

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

Создание собственного REST API эндпоинта в WordPress

Регистрация маршрута и обработчика запроса

Для регистрации собственного маршрута используется функция register_rest_route(). Ниже пример создания простого эндпоинта, который возвращает список последних 5 публикаций.

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

function wpai_get_latest_posts() {
    $args = array(
        'numberposts' => 5,
        'post_status' => 'publish'
    );
    $posts = get_posts($args);
    $data = array();
    foreach ($posts as $post) {
        $data[] = array(
            'id' => $post->ID,
            'title' => $post->post_title,
            'date' => $post->post_date,
            'link' => get_permalink($post->ID)
        );
    }
    return rest_ensure_response($data);
}

Этот код добавляет маршрут /wp-json/wpai/v1/latest-posts, который возвращает JSON с пятью последними постами.

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

Чтобы сделать API более гибким, можно принимать параметры. Например, количество постов можно передавать через GET-параметр count. Расширим предыдущий пример:

function wpai_register_custom_route() {
    register_rest_route('wpai/v1', '/latest-posts', array(
        'methods' => 'GET',
        'callback' => 'wpai_get_latest_posts',
        'permission_callback' => '__return_true',
        'args' => array(
            'count' => array(
                'required' => false,
                'validate_callback' => function($param) {
                    return is_numeric($param) && $param > 0 && $param <= 20;
                },
                'default' => 5
            )
        )
    ));
}

function wpai_get_latest_posts(WP_REST_Request $request) {
    $count = $request->get_param('count');
    $args = array(
        'numberposts' => $count,
        'post_status' => 'publish'
    );
    $posts = get_posts($args);
    $data = array();
    foreach ($posts as $post) {
        $data[] = array(
            'id' => $post->ID,
            'title' => $post->post_title,
            'date' => $post->post_date,
            'link' => get_permalink($post->ID)
        );
    }
    return rest_ensure_response($data);
}

Теперь запрос /wp-json/wpai/v1/latest-posts?count=10 вернёт 10 постов, а если параметр отсутствует — 5 по умолчанию.

Авторизация и безопасность REST API

Ограничение доступа к эндпоинтам

Важно контролировать, кто может использовать ваш API. В примерах выше мы использовали 'permission_callback' => '__return_true', что открывает доступ всем. Для ограниченного доступа можно использовать проверку прав пользователя.

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

function wpai_permission_callback() {
    return current_user_can('manage_options');
}

register_rest_route('wpai/v1', '/secure-data', array(
    'methods' => 'GET',
    'callback' => 'wpai_get_secure_data',
    'permission_callback' => 'wpai_permission_callback',
));

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

Использование nonce и токенов

Для AJAX-запросов из фронтенда WordPress часто рекомендует использовать nonce — специальные токены, чтобы защититься от CSRF-атак. При работе с REST API можно передавать nonce в заголовках или параметрах запросов и проверять их на сервере.

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

Для упрощения разработки и расширения функционала REST API существуют плагины:

  • WP REST API Controller — позволяет управлять доступом к стандартным эндпоинтам без кода.
  • Advanced Custom Fields (ACF) с дополнением ACF to REST API — выводит кастомные поля в JSON-ответах.
  • JWT Authentication for WP REST API — добавляет аутентификацию через JSON Web Tokens.

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

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

Рассмотрим простой пример, как получить данные с созданного нами эндпоинта и отобразить их на странице с помощью fetch и чистого JS.

fetch('/wp-json/wpai/v1/latest-posts?count=5')
  .then(response => response.json())
  .then(data => {
    const container = document.getElementById('posts-container');
    data.forEach(post => {
      const postElem = document.createElement('div');
      postElem.innerHTML = `<a href="${post.link}">${post.title}</a> <small>${post.date}</small>`;
      container.appendChild(postElem);
    });
  })
  .catch(error => console.error('Ошибка загрузки данных:', error));

В HTML достаточно добавить контейнер:

<div id="posts-container"></div>

Так вы легко сможете динамически загружать и выводить данные с WordPress через собственный REST API.

Как создать свой плагин для WordPress с использованием AI
30.11.2025
Автоматическое создание счетов-фактур в WooCommerce: практическое руководство
18.04.2026
Как создать автоматический анализ контента в WordPress с помощью WPGPT
25.02.2026
Как использовать Webhooks в WordPress для автоматизации
05.12.2025
Автоматическое добавление атрибутов и вариаций к товарам WooCommerce
25.04.2026