Руководство по созданию и использованию REST API в WordPress

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

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

REST API — это архитектурный стиль взаимодействия по протоколу HTTP, который позволяет клиентам получать и отправлять данные на сервер с помощью стандартных методов: GET, POST, PUT, DELETE. В WordPress REST API открывает доступ к содержимому сайта в формате JSON, что облегчает интеграцию с мобильными приложениями, внешними сервисами и SPA (Single Page Applications).

Использование REST API упрощает задачи: автоматическое обновление данных на сайте, создание кастомных интерфейсов, интеграция с CRM и другими системами. Благодаря встроенным функциям WordPress вы можете быстро создавать собственные эндпоинты и расширять функционал.

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

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

add_action('rest_api_init', 'wpreg_register_custom_route');
function wpreg_register_custom_route() {
    register_rest_route('wpreg/v1', '/hello/', array(
        'methods' => 'GET',
        'callback' => 'wpreg_hello_endpoint',
    ));
}

function wpreg_hello_endpoint(WP_REST_Request $request) {
    return array('message' => 'Привет из WPReg REST API!');
}

Этот код добавляет эндпоинт /wp-json/wpreg/v1/hello/, который при GET-запросе отдает JSON с сообщением. Это базовый пример, с которого можно начать строить более сложные маршруты.

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

Часто нужно обрабатывать параметры, переданные в запросе. Например, получим имя пользователя и вернем персональное приветствие.

function wpreg_hello_endpoint(WP_REST_Request $request) {
    $name = $request->get_param('name');
    if (!$name) {
        $name = 'Гость';
    }
    return array('message' => 'Привет, ' . sanitize_text_field($name) . '!');
}

Теперь запрос /wp-json/wpreg/v1/hello/?name=Иван вернет «Привет, Иван!».

Создание и управление кастомными типами данных через REST API

REST API автоматически поддерживает стандартные типы записей: посты, страницы, пользователи и т.д. Но что если у вас есть кастомный тип записи, например, «Отзывы»? Чтобы он был доступен через API, нужно при регистрации типа записи включить параметр 'show_in_rest' => true.

function wpreg_register_review_post_type() {
    $args = array(
        'label' => 'Отзывы',
        'public' => true,
        'show_in_rest' => true, // Включаем поддержку REST API
        'supports' => array('title', 'editor', 'custom-fields'),
    );
    register_post_type('wpreg_review', $args);
}
add_action('init', 'wpreg_register_review_post_type');

Теперь записи типа «Отзывы» доступны по REST API по адресу /wp-json/wp/v2/wpreg_review/. Вы можете использовать стандартные методы для получения, создания, редактирования и удаления отзывов через HTTP-запросы.

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

Для создания записи через POST-запрос используйте следующий пример на PHP с использованием wp_remote_post():

$response = wp_remote_post('https://example.com/wp-json/wp/v2/wpreg_review', array(
    'headers' => array(
        'Authorization' => 'Bearer YOUR_ACCESS_TOKEN',
        'Content-Type' => 'application/json',
    ),
    'body' => json_encode(array(
        'title' => 'Отличный сервис',
        'content' => 'Очень доволен качеством работы!',
        'status' => 'publish'
    )),
));

if (is_wp_error($response)) {
    // Обрабатываем ошибку
} else {
    $body = wp_remote_retrieve_body($response);
    $data = json_decode($body);
    // Работа с ответом
}

Не забудьте настроить аутентификацию — для создания и редактирования данных нужен валидный токен, например, с помощью JWT Authentication или OAuth.

Безопасность и права доступа в REST API WordPress

Очень важно контролировать доступ к API, чтобы не допустить утечки или изменения данных посторонними. В callback-функциях можно проверить права пользователя через функции WordPress, например, current_user_can().

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

add_action('rest_api_init', function () {
    register_rest_route('wpreg/v1', '/secure-data/', array(
        'methods' => 'GET',
        'callback' => 'wpreg_secure_data_callback',
        'permission_callback' => 'wpreg_custom_endpoint_permission_check',
    ));
});

function wpreg_secure_data_callback() {
    return array('secret' => 'Только для авторизованных пользователей');
}

Если пользователь не авторизован или не имеет нужных прав, API вернет ошибку 403 Forbidden.

Лучшие плагины для работы с REST API в WordPress

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

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

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

Практические советы по отладке и тестированию REST API

Для отладки запросов используйте инструменты, такие как Postman или Insomnia — они позволяют создавать и тестировать HTTP-запросы с различными параметрами и заголовками. В WordPress также полезно включать WP_DEBUG для выявления ошибок.

Кроме того, для локального тестирования можно использовать плагин Query Monitor, который показывает запросы к API и ошибки, если они есть.

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

Заключение

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

Начинайте с простых примеров, постепенно усложняя задачи, и вы быстро освоите работу с REST API на своем сайте.

Как отключить Gutenberg и вернуть классический редактор в WordPress
12.12.2025
Как отключить AJAX-перезагрузку в WordPress без потери производительности
06.02.2026
Как удалить и избежать duplicate content в WordPress
02.01.2026
Обновление WordPress без проблем: практическое руководство от WPReg
31.10.2025
Как избежать конфликтов между плагинами в WordPress
26.12.2025