WP REST API — мощный инструмент для взаимодействия с WordPress из внешних приложений и автоматизации различных процессов. В данной статье подробно рассмотрим, как с его помощью можно создавать, читать, обновлять и удалять данные, а также автоматизировать рутинные задачи. Приведём примеры кода и рекомендации по безопасности.
Что такое WP REST API и зачем он нужен
WP REST API — это интерфейс программирования приложений, который позволяет работать с сайтом WordPress по HTTP-запросам. Это значит, что с помощью API можно управлять контентом, пользователями, настройками и другими сущностями сайта удалённо, в том числе из сторонних сервисов и скриптов.
Основные возможности WP REST API:
- Получение записей, страниц, таксономий, пользователей и других данных в формате JSON.
- Создание, редактирование и удаление данных через HTTP-запросы.
- Интеграция с внешними сервисами и автоматизация процессов.
Это особенно полезно для автоматизации: например, импорт контента из внешних систем, обновление данных по расписанию или интеграция с CRM.
Подключение и базовые примеры работы с WP REST API
По умолчанию WP REST API включён в WordPress начиная с версии 4.7. Чтобы получить список последних постов, достаточно отправить GET-запрос на URL:
https://example.com/wp-json/wp/v2/postsВ ответ придёт JSON с данными. Для автоматизации на стороне сервера или в скриптах можно использовать PHP, Python, JavaScript и другие языки.
Пример получения постов на PHP с использованием wp_remote_get:
function wpelement_get_latest_posts() {
$response = wp_remote_get('https://example.com/wp-json/wp/v2/posts?per_page=5');
if (is_wp_error($response)) {
return [];
}
$body = wp_remote_retrieve_body($response);
$posts = json_decode($body, true);
return $posts;
}Так можно автоматически выводить последние записи на сторонних проектах или интегрировать с другими сервисами.
Автоматизация создания и обновления контента через WP REST API
Для создания записи через REST API нужно отправить POST-запрос на /wp-json/wp/v2/posts с необходимыми данными, например, заголовком и содержимым. Однако для этого требуется авторизация.
Пример на PHP с использованием базовой аутентификации (Basic Auth):
function wpelement_create_post($title, $content, $username, $password) {
$url = 'https://example.com/wp-json/wp/v2/posts';
$data = [
'title' => $title,
'content' => $content,
'status' => 'publish'
];
$args = [
'headers' => [
'Authorization' => 'Basic ' . base64_encode($username . ':' . $password),
'Content-Type' => 'application/json'
],
'body' => json_encode($data),
'method' => 'POST'
];
$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
return false;
}
return json_decode(wp_remote_retrieve_body($response), true);
}Такой подход позволяет автоматизировать публикацию контента из внешних систем, например, CRM или ERP.
Настройка аутентификации для безопасности
WP REST API по умолчанию поддерживает несколько методов аутентификации: cookie, Basic Auth, OAuth и JWT. Для автоматизации лучше использовать JWT (JSON Web Token) или OAuth, так как Basic Auth передаёт пароль в открытом виде.
Плагин Clearfy Pro помогает настроить безопасный доступ к REST API и отключить ненужные эндпоинты для защиты сайта.
Пример автоматической очистки черновиков и ревизий с помощью WP REST API и CRON
Иногда нужно регулярно удалять старые черновики и ревизии, чтобы уменьшить размер базы данных. Можно написать скрипт, который по расписанию обращается к REST API и удаляет ненужные записи.
Пример PHP-скрипта для удаления черновиков через REST API:
function wpelement_delete_drafts($username, $password) {
$url = 'https://example.com/wp-json/wp/v2/posts?status=draft&per_page=100';
$args = [
'headers' => [
'Authorization' => 'Basic ' . base64_encode($username . ':' . $password)
]
];
$response = wp_remote_get($url, $args);
if (is_wp_error($response)) return;
$posts = json_decode(wp_remote_retrieve_body($response), true);
foreach ($posts as $post) {
$delete_url = 'https://example.com/wp-json/wp/v2/posts/' . $post['id'] . '?force=true';
$del_args = [
'method' => 'DELETE',
'headers' => $args['headers']
];
wp_remote_request($delete_url, $del_args);
}
}Этот скрипт можно запускать по CRON на сервере для автоматической очистки.
Плагины для расширения возможностей WP REST API
Для удобства работы с WP REST API существуют плагины, которые добавляют новые эндпоинты и функции:
- WP REST API Controller — позволяет управлять доступом и настраивать эндпоинты через админку.
- Advanced Custom Fields to REST API — добавляет поля ACF к REST API, что удобно при работе с кастомными метаполями.
- JWT Authentication for WP REST API — добавляет поддержку JWT для безопасной аутентификации.
Также плагин WPCommunity может помочь в интеграции REST API для сайтов с социальной составляющей.
Советы по оптимизации и безопасности при работе с WP REST API
При автоматизации важно помнить о безопасности и производительности:
- Ограничьте доступ к REST API только необходимым пользователям и приложениям.
- Используйте современные методы аутентификации (JWT, OAuth).
- Кэшируйте ответы, если данные не меняются часто, чтобы снизить нагрузку.
- Логируйте запросы для анализа и выявления подозрительной активности.
- Регулярно обновляйте WordPress и плагины для защиты от уязвимостей.
Плагин Clearfy Pro отлично помогает в тонкой настройке безопасности REST API.