REST API в WordPress предоставляет мощный и гибкий способ взаимодействия с сайтом через HTTP-запросы. Благодаря REST API можно получать, создавать, обновлять и удалять данные WordPress без необходимости заходить в админку. В этой статье мы подробно рассмотрим, как использовать REST API для получения данных, какие есть типичные задачи при работе с ним и приведем примеры кода и плагинов, которые помогут упростить работу.
Что такое REST API в WordPress и зачем он нужен
REST API представляет собой интерфейс программирования приложений, который позволяет обмениваться данными по протоколу HTTP в формате JSON. WordPress изначально поддерживает REST API для основных сущностей: посты, страницы, пользователи, таксономии и т.д.
Основные преимущества использования REST API:
- Возможность создавать фронтенд на React, Vue.js или любом другом фреймворке, который обращается к WordPress за контентом.
- Интеграция с внешними сервисами и мобильными приложениями.
- Автоматизация задач, например, массовое обновление постов или получение статистики.
- Разработка своих плагинов с API для кастомных целей.
Для тех, кто хочет углубиться, полезно знать, что WordPress REST API доступен по URL вида https://ваш-сайт/wp-json/wp/v2/. Отсюда можно получать данные, например, https://ваш-сайт/wp-json/wp/v2/posts вернет список постов.
Как получить данные постов через REST API
Самый базовый пример — получить список публикаций. Для этого можно отправить GET-запрос на эндпоинт:
https://ваш-сайт/wp-json/wp/v2/postsВ ответ вы получите массив объектов с ключами id, date, title, content и другими.
Если нужно получить конкретный пост, добавьте его ID:
https://ваш-сайт/wp-json/wp/v2/posts/123Для фильтрации и сортировки можно использовать параметры запроса. Например, получить 5 последних постов категории с ID=4:
https://ваш-сайт/wp-json/wp/v2/posts?categories=4&per_page=5&orderby=date&order=descОбратите внимание, что WordPress по умолчанию возвращает только анонс поста в excerpt, а полный контент в content.rendered. Чтобы работать с этим удобно, обычно парсят JSON и выводят нужные поля.
Пример кода для получения данных через REST API на PHP
Допустим, нам нужно программно получить список последних 3 постов и вывести их заголовки и ссылки. Вот простой пример функции с приставкой wpload_:
function wpload_get_latest_posts() {
$response = wp_remote_get('https://ваш-сайт/wp-json/wp/v2/posts?per_page=3');
if (is_wp_error($response)) {
return 'Ошибка получения данных';
}
$body = wp_remote_retrieve_body($response);
$posts = json_decode($body);
if (empty($posts)) {
return 'Посты не найдены';
}
$output = '<ul>';
foreach ($posts as $post) {
$output .= '<li><a href="' . esc_url($post->link) . '">' . esc_html($post->title->rendered) . '</a></li>';
}
$output .= '</ul>';
return $output;
}Эту функцию можно использовать в шорткоде или виджете для вывода последних постов, полученных через REST API.
Работа с аутентификацией и защищёнными данными
По умолчанию REST API позволяет получать публичные данные без авторизации. Однако если нужно работать с приватными данными, создавать, обновлять или удалять записи, потребуется аутентификация.
Самые распространенные методы аутентификации:
- Basic Auth — простой, но менее безопасный способ, подходит для тестирования.
- OAuth — более сложный, но безопасный, подходит для внешних приложений.
- JWT (JSON Web Token) — современный способ, который популярен в WordPress-сообществе.
Для использования JWT можно установить плагин JWT Authentication for WP REST API. После настройки плагина вы сможете получать токен и использовать его в заголовках запросов.
Пример запроса с JWT
curl -X POST https://ваш-сайт/wp-json/jwt-auth/v1/token \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"пароль"}'В ответ придет токен, который нужно передавать в заголовках запросов к защищенным эндпоинтам:
Authorization: Bearer ваш_токенРасширение REST API с помощью пользовательских полей и типов записей
Часто возникает задача получить через REST API кастомные поля или данные, которые не входят в стандартный набор. Для этого нужно зарегистрировать их в REST API с помощью фильтров.
Пример регистрации пользовательского поля phone_number для типа записи contact:
function wpload_register_custom_field() {
register_rest_field('contact', 'phone_number', [
'get_callback' => function($object) {
return get_post_meta($object['id'], 'phone_number', true);
},
'schema' => null,
]);
}
add_action('rest_api_init', 'wpload_register_custom_field');Теперь при запросе к /wp-json/wp/v2/contact вы получите поле phone_number в ответе.
Лучшие плагины для работы с REST API в WordPress
Есть несколько плагинов, которые облегчают работу с REST API и расширяют его возможности:
- WP REST API Controller — позволяет управлять доступом к типам записей и полям через интерфейс.
- Advanced Custom Fields (ACF) to REST API — добавляет поля ACF в REST API.
- JWT Authentication for WP REST API — добавляет поддержку JWT для аутентификации.
- REST API Toolbox — для настройки и ограничения эндпоинтов.
Использование этих плагинов значительно ускорит разработку и решит типовые задачи, связанные с безопасностью и расширением API.
Заключение: практические советы по работе с REST API в WordPress
Чтобы эффективно использовать REST API, рекомендую:
- Внимательно читать документацию WordPress REST API и использовать дебаггеры для анализа запросов.
- Всегда проверять права доступа при работе с защищенными данными.
- Использовать кэширование результатов, чтобы снизить нагрузку на сервер.
- Расширять API только необходимыми полями, чтобы не перегружать ответы.
- Использовать плагины для упрощения аутентификации и управления доступом.
REST API — это не просто инструмент для разработчиков, это мост между WordPress и внешними приложениями. Освоив его, вы сможете создавать гибкие и современные веб-приложения на базе вашего сайта.