Что такое REST API в WordPress и зачем он нужен
REST API — это современный интерфейс взаимодействия с данными сайта, построенный на архитектурном стиле REST. В WordPress он позволяет получать, создавать, обновлять и удалять данные через HTTP-запросы в формате JSON. Это открывает возможности для разработки мобильных приложений, одностраничных приложений (SPA), интеграций с внешними сервисами и кастомных административных панелей.
С внедрением REST API WordPress перешёл от классической серверной CMS к полноценной платформе для разработки сложных веб-приложений. Благодаря ему, разработчики могут работать с контентом вне стандартного PHP-шаблона, используя JavaScript-фреймворки или другие технологии.
На практике REST API позволяет создавать мощные инструменты, например, фронтенды на React или Vue, мобильные приложения для управления сайтом, или интеграции с CRM и ERP-системами.
Основные возможности и стандартные эндпоинты REST API в WordPress
По умолчанию WordPress предоставляет множество маршрутов (эндпоинтов) для работы с основными сущностями: посты, страницы, пользователи, комментарии, таксономии. Все они доступны по URL вида https://ваш-сайт.ru/wp-json/wp/v2/, например:
/posts— список постов;/pages— страницы;/comments— комментарии;/users— пользователи;/taxonomies— таксономии и т.д.
Для получения списка постов можно выполнить GET запрос на /wp-json/wp/v2/posts. Чтобы создать новый пост — отправить POST запрос с соответствующими данными и авторизацией.
REST API поддерживает фильтрацию, сортировку, пагинацию, что позволяет гибко управлять данными и строить эффективные запросы.
Аутентификация и авторизация в REST API WordPress
Для публичных данных часто аутентификация не требуется, но для создания, редактирования, удаления контента необходимо подтвердить права пользователя. WordPress предлагает несколько методов аутентификации:
- Cookie + Nonce — для запросов из браузера, когда пользователь авторизован в админке;
- Basic Auth — простой способ, подходит для тестирования, но не рекомендуется на продакшене;
- OAuth 1.0a — более сложный, но безопасный метод;
- JWT (JSON Web Token) — популярный и удобный способ, для которого есть готовые плагины.
Для практического применения JWT можно использовать плагин JWT Authentication for WP REST API. Он позволяет выдавать токены и использовать их в заголовках запроса для аутентификации.
Пример настройки JWT Authentication
После установки и активации плагина в wp-config.php необходимо добавить секретный ключ:
define('JWT_AUTH_SECRET_KEY', 'wpbest_super_secret_key_12345');Далее в запросе к API нужно отправлять заголовок:
Authorization: Bearer ваш_токенЭто обеспечит безопасность и позволит выполнять запросы от имени пользователя.
Создание собственного эндпоинта REST API в WordPress на примере плагина
Одно из преимуществ REST API — возможность создавать свои пользовательские маршруты для работы с кастомной логикой. Рассмотрим пример плагина, который добавляет эндпоинт для получения списка последних 5 кастомных записей «portfolio».
<?php
/**
* Plugin Name: WPBest Portfolio API
* Description: Добавляет REST API эндпоинт для портфолио
* Version: 1.0
* Author: WPBest
*/
add_action('rest_api_init', function () {
register_rest_route('wpbest/v1', '/portfolio', array(
'methods' => 'GET',
'callback' => 'wpbest_get_portfolio',
'permission_callback' => '__return_true',
));
});
function wpbest_get_portfolio() {
$args = array(
'post_type' => 'portfolio',
'posts_per_page' => 5,
'post_status' => 'publish',
);
$query = new WP_Query($args);
$items = array();
foreach ($query->posts as $post) {
$items[] = array(
'id' => $post->ID,
'title' => $post->post_title,
'excerpt' => $post->post_excerpt,
'link' => get_permalink($post->ID),
);
}
return rest_ensure_response($items);
}
Этот код регистрирует маршрут /wp-json/wpbest/v1/portfolio, который возвращает JSON с последними 5 элементами портфолио. Для доступа к нему не нужна авторизация, но при необходимости можно добавить проверку прав в permission_callback.
Регистрация кастомного типа записи «portfolio»
Чтобы пример работал, нужно заранее зарегистрировать кастомный тип записи. Добавьте в файл плагина или functions.php темы:
function wpbest_register_portfolio_cpt() {
$labels = array(
'name' => 'Портфолио',
'singular_name' => 'Портфолио',
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'show_in_rest' => true,
'supports' => array('title', 'editor', 'excerpt', 'thumbnail'),
);
register_post_type('portfolio', $args);
}
add_action('init', 'wpbest_register_portfolio_cpt');Использование REST API WordPress с JavaScript — пример запроса с Fetch API
Для фронтенда часто применяют JavaScript и Fetch API для получения данных из REST API. Пример запроса для получения последних 5 постов:
fetch('https://wpbest.ru/wp-json/wp/v2/posts?per_page=5')
.then(response => response.json())
.then(data => {
data.forEach(post => {
console.log('Заголовок:', post.title.rendered);
console.log('Ссылка:', post.link);
});
})
.catch(error => console.error('Ошибка:', error));Так можно динамически выводить контент на страницах без перезагрузки, создавать SPA или мобильные приложения.
Полезные плагины для работы с REST API в WordPress
- JWT Authentication for WP REST API — добавляет поддержку JWT аутентификации;
- WP REST API Controller — удобный интерфейс для управления разрешениями и настройками API;
- REST API Toolbox — расширяет функциональность стандартного REST API, добавляет кастомные поля;
- Advanced Custom Fields (ACF) + ACF to REST API — позволяет использовать кастомные поля ACF в REST запросах.
Заключение по использованию REST API в WordPress
REST API открывает большие возможности для расширения функциональности WordPress. С его помощью можно создавать современные интерфейсы, интеграции, приложения и управлять сайтом более гибко. Важно понимать особенности аутентификации, правильно регистрировать собственные маршруты и использовать готовые решения для ускорения разработки.
Рассмотренный пример плагина — лишь основа, на которой можно строить сложные проекты, добавляя обработку POST, PUT, DELETE запросов, проверки прав и работу с метаданными.