Что такое REST API в WordPress и зачем он нужен
REST API — это интерфейс, который позволяет взаимодействовать с WordPress через HTTP-запросы. С его помощью можно создавать, читать, обновлять и удалять данные на сайте вне классического интерфейса администратора. Например, можно делать мобильные приложения, одностраничные SPA, или интегрировать WordPress с внешними сервисами.
Данный API построен по стандарту REST, что делает его универсальным и удобным для работы с любыми клиентами — от JavaScript-приложений до внешних серверных сервисов.
В WordPress REST API доступен с версии 4.7 и охватывает практически все основные объекты: посты, страницы, таксономии, пользователей и многое другое. Также есть возможность расширять его, добавляя кастомные маршруты и обработчики.
Основные возможности REST API в WordPress: эндпоинты и методы
REST API работает через эндпоинты — URL, которые соответствуют определённым ресурсам. Например, /wp-json/wp/v2/posts возвращает список постов.
Методы HTTP определяют действие над ресурсом:
GET— получение данных;POST— создание нового ресурса;PUT/PATCH— обновление;DELETE— удаление.
В WordPress по умолчанию доступны CRUD операции для стандартных типов записей, таксономий и пользователей (с ограничениями по правам доступа).
Чтобы получить список постов, можно отправить простой GET-запрос:
GET https://example.com/wp-json/wp/v2/postsОтвет приходит в формате JSON с массивом объектов постов, включая их заголовок, содержимое, дату публикации и т.д.
Как создать собственные REST API эндпоинты в WordPress
Часто возникает задача расширить стандартный функционал REST API, добавив свои кастомные маршруты для специфических задач. Для этого нужно использовать хук rest_api_init и функцию register_rest_route().
Пример: добавим эндпоинт /wp-json/wptests/v1/hello, который будет возвращать простое приветствие.
add_action('rest_api_init', function () { register_rest_route('wptests/v1', '/hello', array( 'methods' => 'GET', 'callback' => 'wptests_hello_callback', ));});function wptests_hello_callback(WP_REST_Request $request) { return new WP_REST_Response(['message' => 'Привет от WPTests!'], 200);}После добавления этого кода в файл плагина или в functions.php, при обращении к URL https://yoursite.ru/wp-json/wptests/v1/hello вы получите JSON с сообщением.
Обработка параметров запроса
Можно принимать параметры через URL или тело запроса. Например, добавим параметр name:
add_action('rest_api_init', function () { register_rest_route('wptests/v1', '/greet', array( 'methods' => 'GET', 'callback' => 'wptests_greet_callback', 'args' => array( 'name' => array( 'required' => false, 'validate_callback' => function($param, $request, $key) { return is_string($param); }, ), ), ));});function wptests_greet_callback(WP_REST_Request $request) { $name = $request->get_param('name') ?? 'гость'; return new WP_REST_Response(['message' => "Привет, $name!"], 200);}Теперь запрос /wp-json/wptests/v1/greet?name=Алексей вернёт «Привет, Алексей!».
Использование REST API для создания кастомных приложений
REST API открывает возможности создавать одностраничные приложения на React, Vue или Angular, которые будут динамично загружать данные WordPress без перезагрузки страницы.
Пример: получим список последних постов через fetch на стороне клиента:
fetch('https://yoursite.ru/wp-json/wp/v2/posts') .then(response => response.json()) .then(posts => { posts.forEach(post => { console.log(post.title.rendered); }); });Такой подход помогает отделить фронтенд от бэкенда, повысить отзывчивость интерфейса и интегрировать WordPress с внешними сервисами.
Авторизация и права доступа
Для публичных данных (посты, страницы) авторизация обычно не нужна. Но если вы хотите создавать или редактировать записи через API, нужно использовать аутентификацию — например, через Basic Auth, OAuth или Application Passwords.
WordPress поддерживает Application Passwords из коробки — их можно создать в профиле пользователя и использовать для безопасного доступа к API.
Пример запроса с Basic Auth (используйте HTTPS):
fetch('https://yoursite.ru/wp-json/wp/v2/posts', { method: 'POST', headers: { 'Authorization': 'Basic ' + btoa('username:application_password'), 'Content-Type': 'application/json', }, body: JSON.stringify({ title: 'Новый пост через API', status: 'publish' })}) .then(response => response.json()) .then(data => console.log(data));Полезные плагины для работы с REST API в WordPress
Для удобства разработки и расширения REST API существуют плагины, которые упрощают настройку и добавляют новые возможности:
- WP REST API Controller — позволяет управлять видимостью метаданных и полей через интерфейс, без кода.
- JWT Authentication for WP REST API — добавляет поддержку JWT токенов для более безопасной авторизации.
- Advanced Custom Fields to REST API — расширяет REST API, делая доступными поля из ACF.
Использование этих плагинов поможет быстрее интегрировать кастомные поля и безопасно работать с API.
Советы по безопасности и производительности при работе с REST API
REST API — мощный инструмент, но требует внимания к безопасности:
- Всегда проверяйте права пользователя в callback-функциях, если данные изменяются или доступны не всем.
- Ограничивайте доступ к чувствительным данным.
- Для публичных запросов используйте кэширование, например, через transient API или внешние сервисы, чтобы снизить нагрузку.
- Проверяйте и валидируйте входящие параметры — это поможет избежать ошибок и уязвимостей.
Также рекомендуется использовать HTTPS, чтобы данные при передаче между клиентом и сервером были защищены.
Выводы и рекомендации по использованию REST API в WordPress
REST API — отличное решение для создания гибких и масштабируемых приложений на базе WordPress. Он позволяет отделить фронтенд от бэкенда, интегрировать сайт с другими сервисами и расширять функционал без изменения ядра.
Для успешной работы с API обязательно изучите документацию, научитесь создавать свои маршруты и обрабатывать запросы с учетом безопасности и производительности.
Пример кода и советы из этой статьи помогут вам начать создавать собственные REST API решения и улучшить ваш WordPress-проект.