WordPress REST API — мощный инструмент, который позволяет создавать, читать, обновлять и удалять данные сайта программным способом через HTTP-запросы. Это открывает огромные возможности для автоматизации рутинных задач, интеграции с внешними сервисами и расширения функционала сайтов без необходимости напрямую работать с базой данных или интерфейсом админки.
Что такое WordPress REST API и зачем он нужен
REST API (Representational State Transfer Application Programming Interface) — архитектурный стиль, используемый для создания веб-сервисов. В WordPress REST API реализован с версии 4.7 и предоставляет стандартный набор эндпоинтов для доступа к основным данным: постам, страницам, пользователям, таксономиям и другим объектам.
С помощью REST API можно:
- Автоматически создавать и обновлять записи и страницы;
- Интегрировать WordPress с мобильными приложениями или внешними системами;
- Создавать кастомные интерфейсы управления контентом;
- Реализовывать сложные сценарии публикации и модерации через скрипты.
Для разработчиков это означает более гибкий и современный подход к работе с сайтом, избавляющий от необходимости писать сложные SQL-запросы или использовать кривые обходные пути.
Основы работы с REST API в WordPress
Чтобы начать использовать REST API, нужно знать базовые URL и методы HTTP-запросов. По умолчанию базовый адрес API выглядит так:
https://your-site.com/wp-json/wp/v2/Например, получить список последних постов можно запросом GET к /wp-json/wp/v2/posts. Чтобы создать новую запись, используется метод POST с передачей данных в формате JSON.
Для авторизации чаще всего применяется метод OAuth или использование Application Passwords (паролей приложений), которые появились в WordPress 5.6. Это позволяет безопасно выполнять защищённые операции через API.
Пример получения списка публикаций через PHP
Для примера создадим функцию с префиксом домена, которая получит последние 5 постов с сайта через REST API и выведет их заголовки:
function wprobot_get_latest_posts() {
$response = wp_remote_get('https://your-site.com/wp-json/wp/v2/posts?per_page=5');
if (is_wp_error($response)) {
return 'Ошибка получения данных';
}
$posts = json_decode(wp_remote_retrieve_body($response));
if (empty($posts)) {
return 'Посты не найдены';
}
$output = '<ul>';
foreach ($posts as $post) {
$output .= '<li>' . esc_html($post->title->rendered) . '</li>';
}
$output .= '</ul>';
return $output;
}Эту функцию можно использовать в шорткоде или виджете для динамического вывода данных.
Примеры плагинов для работы с REST API и автоматизации
Среди плагинов, расширяющих возможности REST API или облегчающих автоматизацию, рекомендую обратить внимание на следующие:
- WP REST API Controller — позволяет гибко управлять доступом и настройками эндпоинтов API без кода.
- Advanced Custom Fields (ACF) с дополнением для REST API — расширяет стандартный API для работы с кастомными полями.
- WP Webhooks — плагин для создания вебхуков и автоматизации обмена данными с внешними сервисами.
- WP All Import / Export — поддерживает работу через REST API для массового импорта и экспорта данных.
Автоматическое создание постов через REST API и PHP
Рассмотрим, как с помощью REST API программно создавать новые записи. Для этого нужно отправить POST-запрос с авторизацией. Ниже пример функции для создания поста с использованием базовой авторизации (Application Passwords):
function wprobot_create_post_via_api($title, $content, $username, $app_password) {
$url = 'https://your-site.com/wp-json/wp/v2/posts';
$data = [
'title' => $title,
'content' => $content,
'status' => 'publish'
];
$args = [
'headers' => [
'Authorization' => 'Basic ' . base64_encode($username . ':' . $app_password),
'Content-Type' => 'application/json'
],
'body' => json_encode($data),
'method' => 'POST'
];
$response = wp_remote_post($url, $args);
if (is_wp_error($response)) {
return 'Ошибка: ' . $response->get_error_message();
}
$code = wp_remote_retrieve_response_code($response);
if ($code !== 201) {
return 'Не удалось создать пост, код ответа: ' . $code;
}
return 'Пост успешно создан';
}Важно помнить, что в реальном проекте лучше использовать nonce и более безопасные методы аутентификации, а также обрабатывать ошибки и исключения более детально.
Расширение REST API: создание своих эндпоинтов
В некоторых случаях стандартного API недостаточно, и нужно создать собственные маршруты для специфичных задач. WordPress позволяет это сделать с помощью функции register_rest_route().
Пример создания кастомного эндпоинта, который возвращает текущее время сервера:
add_action('rest_api_init', function () {
register_rest_route('wprobot/v1', '/time', [
'methods' => 'GET',
'callback' => 'wprobot_get_server_time',
]);
});
function wprobot_get_server_time() {
return ['time' => current_time('mysql')];
}Этот эндпоинт будет доступен по адресу /wp-json/wprobot/v1/time и вернёт текущую дату и время по серверу. При помощи таких расширений можно строить сложные API для интеграций и автоматизации.
Практические советы по безопасности и производительности
Работая с REST API, важно уделять внимание безопасности:
- Используйте авторизацию и проверяйте права пользователя, особенно при изменениях данных.
- Ограничивайте доступ к чувствительным эндпоинтам через фильтры и роли.
- Кешируйте часто запрашиваемые данные для снижения нагрузки.
- Проверяйте и валидируйте входящие данные, чтобы избежать уязвимостей.
Кроме того, внимательно тестируйте API на нагрузку и корректность работы, чтобы избежать сбоев и потери данных.
Итоги
Использование WordPress REST API — это современный способ автоматизировать управление сайтом, интегрировать его с внешними системами и создавать кастомные решения. С помощью REST API можно упростить многие задачи, сделать сайт более функциональным и удобным для администраторов и разработчиков. В статье приведены ключевые концепции, примеры кода и рекомендации по плагинам, которые помогут быстро начать работу и избежать распространённых ошибок.