Автоматизация обновления контента — важный аспект эффективного управления сайтом на WordPress. В этой статье мы подробно разберем, как настроить регулярное обновление записей с помощью системного планировщика WP-Cron и интеграции с плагином WPGPT, который позволяет генерировать уникальные тексты с помощью GPT-модели прямо в админке сайта.
Что такое WP-Cron и зачем он нужен для автоматизации
WP-Cron — это встроенный в WordPress механизм планирования задач. Он не зависит от системного cron на сервере, а запускается при посещении сайта. С его помощью можно выполнять определенные функции по расписанию: обновлять данные, отправлять уведомления, публиковать новые записи и многое другое.
Для автоматического обновления контента WP-Cron — оптимальный вариант, если нет доступа к системному cron. Однако стоит помнить, что при низкой посещаемости сайта задачи могут срабатывать с задержками.
Основные преимущества использования WP-Cron:
- Автоматизация рутинных задач без вмешательства администратора.
- Гибкость в настройке интервалов и условий запуска.
- Возможность интеграции с плагинами и собственным кодом.
Интеграция WPGPT для генерации уникального контента
Плагин WPGPT позволяет создавать тексты с помощью GPT прямо в WordPress. Это дает возможность автоматически обновлять записи, добавлять новые разделы или создавать анонсы без ручного ввода.
Комбинируя WP-Cron и WPGPT, можно настроить регулярное обновление контента по расписанию, например, обновлять описание товаров, новости или блоги.
Практическая реализация: пример кода для автоматического обновления записей
Рассмотрим, как написать функцию, которая будет запускаться по расписанию и обновлять контент с помощью WPGPT API.
1. Сначала регистрируем задачу в WP-Cron:
add_action('wpurok_update_content_event', 'wpurok_update_content_function');
function wpurok_activate_cron() {
if (!wp_next_scheduled('wpurok_update_content_event')) {
wp_schedule_event(time(), 'hourly', 'wpurok_update_content_event');
}
}
register_activation_hook(__FILE__, 'wpurok_activate_cron');
function wpurok_deactivate_cron() {
$timestamp = wp_next_scheduled('wpurok_update_content_event');
wp_unschedule_event($timestamp, 'wpurok_update_content_event');
}
register_deactivation_hook(__FILE__, 'wpurok_deactivate_cron');
В данном коде мы задаем выполнение функции wpurok_update_content_function каждый час. При активации плагина или темы будет запущена задача, при деактивации — удалена.
2. Далее пишем функцию обновления контента с вызовом WPGPT:
function wpurok_update_content_function() {
// Получаем ID записей для обновления
$args = [
'post_type' => 'post',
'posts_per_page' => 5,
'orderby' => 'date',
'order' => 'DESC'
];
$posts = get_posts($args);
foreach ($posts as $post) {
// Формируем запрос для WPGPT API
$prompt = 'Обнови описание для поста с заголовком: ' . $post->post_title;
$response = wpurok_call_wpgpt_api($prompt);
if ($response && !empty($response['text'])) {
// Обновляем контент поста
wp_update_post([
'ID' => $post->ID,
'post_content' => $response['text']
]);
}
}
}
function wpurok_call_wpgpt_api($prompt) {
$api_key = 'ВАШ_КЛЮЧ_WPGPT';
$endpoint = 'https://wpshop.ru/api/wpgpt/generate';
$args = [
'body' => json_encode(['prompt' => $prompt]),
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $api_key
],
'method' => 'POST',
'timeout' => 20
];
$response = wp_remote_post($endpoint, $args);
if (is_wp_error($response)) {
return false;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
return $data;
}
В этой функции мы берём последние 5 записей, отправляем заголовок каждой записи в WPGPT для генерации нового текста и обновляем контент записи. Для работы нужно получить API-ключ плагина WPGPT на официальном сайте.
Дополнительные настройки и рекомендации
Выбор интервала запуска WP-Cron
По умолчанию WordPress поддерживает интервалы 'hourly', 'twicedaily', 'daily'. Если нужно более частое обновление, можно добавить свой интервал:
add_filter('cron_schedules', 'wpurok_custom_cron_intervals');
function wpurok_custom_cron_intervals($schedules) {
$schedules['every_fifteen_minutes'] = [
'interval' => 900, // 15 минут в секундах
'display' => __('Каждые 15 минут')
];
return $schedules;
}
И использовать его в вызове wp_schedule_event.
Обработка ошибок и логирование
Для надежности стоит добавить логирование успешных и неуспешных обновлений в отдельный файл или использовать системный журнал. Это поможет быстро выявлять проблемы с API или с WP-Cron.
Ограничение обновляемых записей
Если ваш сайт содержит большое количество записей, разумно ограничивать число обновляемых за одну задачу, чтобы избежать перегрузки сервера. Можно также фильтровать посты по категориям или меткам.
Заключение
Настройка автоматического обновления контента через WP-Cron и WPGPT — мощный инструмент для поддержания актуальности сайта без постоянного ручного редактирования. Приведенный пример кода легко адаптируется под конкретные задачи и позволяет масштабировать автоматизацию.
Для дополнительного удобства рекомендуем ознакомиться с документацией WPGPT и возможностями расширения WP-Cron под ваши нужды.