WordPress REST API — это мощный инструмент, позволяющий взаимодействовать с сайтом через HTTP-запросы. Он открывает широкие возможности для разработки мобильных приложений, одностраничных приложений (SPA), а также интеграции с внешними сервисами. В этой статье мы подробно разберем, как установить, настроить и использовать REST API в WordPress, а также рассмотрим примеры кода и полезные плагины.
Что такое WordPress REST API и зачем он нужен
REST API в WordPress — это интерфейс программирования приложений, который позволяет получить доступ к данным сайта в формате JSON. С его помощью можно управлять постами, страницами, пользователями и другими элементами сайта без необходимости заходить в админку.
Главные преимущества использования REST API:
- Позволяет создавать кастомные фронтенды на React, Vue или Angular;
- Обеспечивает возможность интеграции с внешними системами;
- Упрощает разработку мобильных приложений на основе данных сайта;
- Облегчает автоматизацию задач и создание собственных инструментов управления.
Для разработчика важно понимать, как включить и настроить REST API, чтобы использовать его максимально эффективно.
Как проверить и включить REST API в WordPress
Начиная с версии 4.7, REST API встроен в ядро WordPress. По умолчанию он активирован, но иногда может быть отключен для повышения безопасности или по другим причинам.
Чтобы проверить, работает ли REST API на вашем сайте, достаточно перейти по адресу:
https://ваш-сайт.ru/wp-json/wp/v2/postsЕсли вы увидите JSON с постами, API работает корректно.
Если REST API отключен, можно включить его, добавив в файл functions.php вашей темы следующий код:
function wpexperts_enable_rest_api() {
return true;
}
add_filter('rest_enabled', 'wpexperts_enable_rest_api');Также стоит проверить, не блокируют ли работу API плагины безопасности, кэширования или файлы .htaccess.
Защита REST API: ограничение доступа и аутентификация
REST API по умолчанию предоставляет публичный доступ к некоторым данным, например, постам и страницам. Однако для управления контентом требуется аутентификация.
Существует несколько способов аутентификации в REST API:
- Cookie Authentication — используется внутри WordPress (например, при работе в админке);
- Basic Authentication — простой способ, подходит для разработки, но не рекомендуется для боевых сайтов без HTTPS;
- OAuth и JWT Authentication — более безопасные методы для боевых проектов.
Для добавления базовой аутентификации можно использовать плагин Application Passwords, который позволяет создавать отдельные пароли для API-запросов.
Примеры использования REST API в WordPress с кодом
Получение списка последних постов через REST API
Для получения последних 5 постов можно отправить GET-запрос на:
https://ваш-сайт.ru/wp-json/wp/v2/posts?per_page=5Далее в PHP можно обработать ответ с помощью функции wpexperts_get_latest_posts():
function wpexperts_get_latest_posts() {
$response = wp_remote_get('https://ваш-сайт.ru/wp-json/wp/v2/posts?per_page=5');
if (is_wp_error($response)) {
return [];
}
$body = wp_remote_retrieve_body($response);
return json_decode($body, true);
}Эта функция вернет массив с данными последних постов, которые можно использовать в шаблонах или плагинах.
Создание нового поста через REST API с аутентификацией
Для создания поста нужно отправить POST-запрос с заголовком авторизации и необходимыми данными. Пример функции с базовой аутентификацией:
function wpexperts_create_post_via_api($title, $content, $username, $password) {
$url = 'https://ваш-сайт.ru/wp-json/wp/v2/posts';
$args = [
'headers' => [
'Authorization' => 'Basic ' . base64_encode($username . ':' . $password),
'Content-Type' => 'application/json',
],
'body' => json_encode([
'title' => $title,
'content' => $content,
'status' => 'publish'
]),
'method' => 'POST',
];
$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
return false;
}
$body = wp_remote_retrieve_body($response);
return json_decode($body, true);
}Перед использованием данного метода убедитесь, что сайт работает через HTTPS и аутентификация настроена правильно.
Полезные плагины для работы с REST API в WordPress
Для упрощения работы с REST API стоит обратить внимание на следующие плагины:
- WP REST API Controller — позволяет управлять доступом к различным эндпоинтам API без программирования;
- JWT Authentication for WP REST API — добавляет поддержку аутентификации по JWT для безопасного взаимодействия;
- Advanced Custom Fields (ACF) — совместим с REST API и позволяет расширять данные, возвращаемые в запросах;
- Application Passwords — встроенный в WordPress плагин для создания паролей приложения, упрощающий аутентификацию.
Как расширить REST API собственными эндпоинтами
Иногда стандартных эндпоинтов недостаточно, и нужно создать свои. Рассмотрим пример регистрации кастомного маршрута:
function wpexperts_register_api_endpoints() {
register_rest_route('wpexperts/v1', '/hello', [
'methods' => 'GET',
'callback' => 'wpexperts_hello_endpoint',
]);
}
add_action('rest_api_init', 'wpexperts_register_api_endpoints');
function wpexperts_hello_endpoint() {
return ['message' => 'Привет от WPExperts REST API!'];
}Теперь при обращении к /wp-json/wpexperts/v1/hello вы получите JSON с сообщением.
Ошибки и их решение при работе с REST API
Частые проблемы при работе с REST API:
- Ошибка 401 Unauthorized — значит, нет доступа. Проверьте аутентификацию и права пользователя.
- Ошибка 404 Not Found — возможна из-за неправильного URL или отключенного API.
- Ошибка 403 Forbidden — возникает при ограничениях доступа, часто связан с плагинами безопасности.
Для диагностики полезно использовать консоль браузера и инструменты типа Postman для тестирования запросов.