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

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

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

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

Это особенно полезно, если вы хотите:

  • Создать одностраничное приложение (SPA) на React, Vue или другом фреймворке, используя WordPress как backend;
  • Интегрировать сайт с внешними сервисами;
  • Добавить собственные API методы для специфической логики вашего сайта или плагина;
  • Использовать мобильные приложения, которые будут обращаться к WordPress через REST API.

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

Создание собственного REST API эндпоинта — базовый пример

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

Шаг 1. Структура плагина

Создайте папку wpbook-rest-api-example в директории wp-content/plugins и файл wpbook-rest-api-example.php внутри неё.

Шаг 2. Основной код плагина

<?php
/**
 * Plugin Name: WPBook REST API Example
 * Description: Пример создания собственного REST API эндпоинта в WordPress
 * Version: 1.0
 * Author: WPBook
 */

// Регистрируем REST API маршрут
add_action('rest_api_init', 'wpbook_restapi_register_routes');

function wpbook_restapi_register_routes() {
    register_rest_route('wpbook/v1', '/current-user', array(
        'methods' => 'GET',
        'callback' => 'wpbook_restapi_get_current_user',
        'permission_callback' => function () {
            return is_user_logged_in();
        }
    ));
}

// Обработчик запроса
function wpbook_restapi_get_current_user(WP_REST_Request $request) {
    $user = wp_get_current_user();
    if ($user->ID === 0) {
        return new WP_Error('no_user', 'Пользователь не авторизован', array('status' => 401));
    }

    return array(
        'ID' => $user->ID,
        'login' => $user->user_login,
        'email' => $user->user_email,
        'display_name' => $user->display_name
    );
}

В этом коде мы создаём маршрут /wp-json/wpbook/v1/current-user, который возвращает данные текущего авторизованного пользователя. Если пользователь не авторизован, возвращается ошибка 401.

Тестирование собственного REST API эндпоинта

Чтобы проверить работу, авторизуйтесь в админке WordPress и откройте в браузере или Postman следующий URL:

https://ваш-сайт.ru/wp-json/wpbook/v1/current-user

Вы должны увидеть JSON с данными пользователя:

{
  "ID": 1,
  "login": "admin",
  "email": "admin@example.com",
  "display_name": "Администратор"
}

Если вы не авторизованы, получите ошибку:

{
  "code": "no_user",
  "message": "Пользователь не авторизован",
  "data": {
    "status": 401
  }
}

Расширение функционала: REST API и сохранение данных

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

Добавление эндпоинта для обновления пользовательских данных

add_action('rest_api_init', function () {
    register_rest_route('wpbook/v1', '/update-meta', array(
        'methods' => 'POST',
        'callback' => 'wpbook_restapi_update_user_meta',
        'permission_callback' => function () {
            return current_user_can('edit_user', get_current_user_id());
        },
        'args' => array(
            'meta_key' => array('required' => true, 'type' => 'string'),
            'meta_value' => array('required' => true, 'type' => 'string')
        )
    ));
});

function wpbook_restapi_update_user_meta(WP_REST_Request $request) {
    $user_id = get_current_user_id();
    $meta_key = sanitize_text_field($request->get_param('meta_key'));
    $meta_value = sanitize_text_field($request->get_param('meta_value'));

    if (empty($meta_key)) {
        return new WP_Error('missing_meta_key', 'Не указан ключ мета-поля', array('status' => 400));
    }

    update_user_meta($user_id, $meta_key, $meta_value);

    return array('success' => true, 'meta_key' => $meta_key, 'meta_value' => $meta_value);
}

Теперь, отправляя POST-запрос на /wp-json/wpbook/v1/update-meta с параметрами meta_key и meta_value, мы можем обновлять мета-данные текущего пользователя.

Практические советы и безопасность при работе с REST API

При создании собственных REST API методов важно учитывать несколько моментов:

  • Проверка прав доступа. Используйте permission_callback для ограничения доступа к API. Это поможет избежать утечки данных или несанкционированных изменений.
  • Валидация и санитизация данных. Все входящие данные должны пройти проверку и очистку, чтобы предотвратить XSS и SQL-инъекции.
  • Обработка ошибок. Возвращайте информативные ошибки с правильными HTTP статусами, чтобы клиент мог адекватно реагировать.
  • Использование nonce и аутентификации. Для защищённых запросов применяйте nonce или OAuth, особенно если API будет использоваться снаружи.

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

Кроме ручного написания кода, существуют плагины, облегчающие работу с REST API:

  • WP REST API Controller — позволяет управлять доступом к стандартным эндпоинтам без программирования.
  • ACF to REST API — расширяет REST API для полей, созданных через Advanced Custom Fields.
  • REST API Log — полезен для отладки и мониторинга API-запросов.

Эти инструменты помогут ускорить разработку и повысить безопасность.

Заключение

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как автоматически отключать плагины по расписанию в WordPress
27.02.2026
Как удалить неиспользуемые изображения в WordPress и освободить место
23.12.2025
Как создать автоматический импорт записей из XML в WordPress
29.01.2026
Автоматическая оптимизация базы данных WordPress: как ускорить сайт с помощью wpbook
31.10.2025
Как отключить автопроигрывание видео в WordPress: практические методы
29.01.2026