Как использовать REST API для создания простого плагина WordPress

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

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

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

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

  • Создавать динамичные интерфейсы на React, Vue и других фреймворках.
  • Писать мобильные приложения, которые общаются с вашим сайтом.
  • Расширять возможности админки или фронтенда кастомным функционалом.

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

Создаем структуру плагина и регистрируем маршруты REST API

Начнем с создания базового файла плагина wpid-rest-api-example.php в папке wp-content/plugins/wpid-rest-api-example/. В нем регистрируем кастомный маршрут и обработчики.

<?php
/**
 * Plugin Name: WPID REST API Example
 * Description: Пример плагина с использованием REST API в WordPress
 * Version: 1.0
 * Author: WPID
 */

// Регистрация маршрутов при инициализации REST API
add_action('rest_api_init', 'wpid_register_rest_routes');

function wpid_register_rest_routes() {
    register_rest_route('wpid/v1', '/items', array(
        'methods' => 'GET',
        'callback' => 'wpid_get_items',
        'permission_callback' => '__return_true',
    ));

    register_rest_route('wpid/v1', '/items', array(
        'methods' => 'POST',
        'callback' => 'wpid_create_item',
        'permission_callback' => function() {
            return current_user_can('edit_posts');
        },
    ));
}

Здесь мы создаем два маршрута: один для получения списка элементов методом GET, другой — для создания нового элемента методом POST. Обратите внимание на permission_callback: для GET-запроса разрешаем всем, для POST — только авторизованным пользователям с правами редактирования.

Обработка GET-запроса: получение данных

Для демонстрации создадим простую функцию, которая возвращает массив тестовых данных. В реальном плагине здесь будет запрос к базе данных или использование WP_Query.

function wpid_get_items() {
    $items = array(
        array('id' => 1, 'name' => 'Первый элемент'),
        array('id' => 2, 'name' => 'Второй элемент'),
    );
    return rest_ensure_response($items);
}

Функция возвращает ответ в формате JSON, который автоматически сгенерирует WordPress.

Обработка POST-запроса: создание нового элемента

Теперь напишем обработчик, который принимает JSON с данными, валидирует их и возвращает результат. В реальном сценарии здесь вы бы сохраняли данные в базе.

function wpid_create_item(WP_REST_Request $request) {
    $params = $request->get_json_params();
    if (empty($params['name'])) {
        return new WP_Error('missing_name', 'Поле name обязательно', array('status' => 400));
    }

    // Здесь можно добавить сохранение в базу данных
    $new_item = array(
        'id' => rand(100, 999), // Имитация ID
        'name' => sanitize_text_field($params['name']),
    );

    return rest_ensure_response($new_item);
}

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

Пример вызова REST API с фронтенда через JavaScript

Чтобы продемонстрировать, как использовать созданное API, добавим пример запроса из браузера с помощью Fetch API.

fetch('/wp-json/wpid/v1/items')
    .then(response => response.json())
    .then(data => console.log('Полученные элементы:', data));

// Для отправки POST-запроса с авторизацией
fetch('/wp-json/wpid/v1/items', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'X-WP-Nonce': wpApiSettings.nonce // nonce нужно передать из WordPress
    },
    body: JSON.stringify({ name: 'Новый элемент' })
})
.then(response => response.json())
.then(data => console.log('Созданный элемент:', data));

Для корректной работы POST-запроса с авторизацией необходимо передать nonce — защитный токен WordPress. Его можно внедрить через wp_localize_script или аналогичные методы.

Заключение: расширение и применение REST API в плагинах

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

Рекомендуется изучить официальную документацию WordPress REST API и использовать стандартные функции для работы с данными, чтобы обеспечить безопасность и совместимость.

Автоматическое сохранение контента через AJAX в редакторе Gutenberg WordPress
29.01.2026
Как исключить определённые плагины из автообновлений в WordPress
25.04.2026
Как автоматически обновлять миниатюры в WordPress при смене размера изображений
14.03.2026
Как использовать хуки для удаления метаданных в WordPress
08.01.2026
Как удалить старые ревизии постов WordPress без эффекта на производительность
02.01.2026