WordPress REST API — мощный инструмент для интеграции и автоматизации работы с сайтом. Сегодня расскажем, как можно автоматизировать удалённое изменение постов через REST API, что особенно полезно для сайтов с большим объёмом контента или при интеграции с внешними сервисами.
Что такое REST API в WordPress и зачем нужна автоматизация изменения постов
REST API позволяет работать с данными WordPress через HTTP-запросы, что открывает возможности для создания, редактирования и удаления записей программно, без захода в админку. Автоматизация изменения постов через REST API позволяет:
- Обновлять контент массово по расписанию или событию;
- Интегрироваться с внешними CRM, ERP и другими сервисами;
- Создавать кастомные панели управления для редакторов;
- Снижать рутинные задачи и ошибки при ручном редактировании.
Однако для безопасности важно правильно настроить аутентификацию и права доступа.
Аутентификация и безопасность при изменении постов через REST API
Самый простой способ — использовать базовую аутентификацию с логином и паролем, но она не подходит для продакшна из-за уязвимости. Рекомендуется применять OAuth 2.0, JWT (JSON Web Token) или использовать cookie аутентификацию при работе внутри WordPress.
Для примера рассмотрим JWT — популярный метод, который требует установки плагина JWT Authentication for WP REST API.
После установки и настройки плагина необходимо получить токен, отправив POST-запрос:
POST /wp-json/jwt-auth/v1/token
{
"username": "your_username",
"password": "your_password"
}В ответе придёт токен, который будет использоваться в заголовке Authorization для последующих запросов.
Пример запроса для обновления поста
Для изменения поста используется метод POST или PUT на эндпоинт /wp-json/wp/v2/posts/{id}. В заголовках нужно указать токен:
PUT /wp-json/wp/v2/posts/123
Authorization: Bearer your_jwt_token
Content-Type: application/json
{
"title": "Новое название поста",
"content": "Обновлённый контент поста",
"status": "publish"
}Где 123 — ID поста. Этот запрос изменит заголовок, контент и статус публикации.
Практический пример: функция wpbloger_update_post_via_api
Создадим PHP-функцию, которая отправляет запрос на обновление поста через REST API, используя cURL:
function wpbloger_update_post_via_api($post_id, $data, $token) {
$url = get_site_url() . "/wp-json/wp/v2/posts/" . intval($post_id);
$args = [
'http' => [
'method' => 'PUT',
'header' => "Content-Type: application/json\r\nAuthorization: Bearer " . $token . "\r\n",
'content' => json_encode($data),
'timeout' => 15
]
];
$context = stream_context_create($args);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) {
return new WP_Error('api_error', 'Не удалось обновить пост');
}
return json_decode($result, true);
}Использование:
$token = 'ваш_jwt_токен';
$post_id = 123;
$data = [
'title' => 'Обновлённый заголовок',
'content' => 'Новый контент поста',
'status' => 'publish'
];
$response = wpbloger_update_post_via_api($post_id, $data, $token);
if (is_wp_error($response)) {
echo 'Ошибка: ' . $response->get_error_message();
} else {
echo 'Пост успешно обновлён';
}Автоматизация с использованием WP-Cron и REST API
Можно настроить периодические задачи через WP-Cron, которые будут обновлять посты автоматически, например, для актуализации информации или синхронизации с внешними источниками.
Пример добавления задачи в планировщик:
if (!wp_next_scheduled('wpbloger_update_posts_event')) {
wp_schedule_event(time(), 'hourly', 'wpbloger_update_posts_event');
}
add_action('wpbloger_update_posts_event', 'wpbloger_handle_update_posts');
function wpbloger_handle_update_posts() {
$token = 'ваш_jwt_токен';
$post_id = 123;
$data = [
'content' => 'Автоматически обновлённый контент через WP-Cron'
];
wpbloger_update_post_via_api($post_id, $data, $token);
}Такой подход позволяет регулярно обновлять контент без участия администратора.
Полезные плагины для работы с REST API и автоматизацией
- JWT Authentication for WP REST API — добавляет поддержку JWT токенов;
- Clearfy Pro — оптимизация и безопасность REST API;
- WPRemark — для расширенного управления комментариями через API.
Заключение по автоматизации редактирования постов через REST API
Автоматизация изменения постов через REST API — мощный инструмент для повышения эффективности работы с сайтом. Правильная настройка аутентификации, чёткое понимание структуры запросов и использование WP-Cron позволяют создавать гибкие и безопасные решения для обновления контента. Используйте готовые плагины для упрощения задач и не забывайте контролировать права доступа для безопасности вашего сайта.