Что такое WP-Cron и как он помогает автоматизировать задачи в WordPress
WP-Cron — это встроенная система планировщика задач в WordPress, которая позволяет автоматически выполнять определённые действия по расписанию. В отличие от системных cron-задач на сервере, WP-Cron запускается при обращении к сайту, что упрощает использование, но требует правильной настройки для стабильной работы.
Автоматизация создания и удаления черновиков — одна из задач, которую можно решить с помощью WP-Cron. Например, вы можете создавать шаблоны черновиков для определённых типов записей или автоматически удалять старые черновики, чтобы не засорять базу данных.
В этой статье мы подробно рассмотрим, как реализовать подобные функции с помощью кода и существующих плагинов.
Как создать регулярную задачу WP-Cron для автоматического создания черновиков
Для начала нужно зарегистрировать задачу, которая будет выполняться с нужной периодичностью. Например, создадим задачу для создания черновика новости каждый день.
Добавьте следующий код в файл functions.php вашей темы или в собственный плагин:
function wpmentor_schedule_create_draft() {
if ( ! wp_next_scheduled( 'wpmentor_create_daily_draft' ) ) {
wp_schedule_event( time(), 'daily', 'wpmentor_create_daily_draft' );
}
}
add_action( 'wp', 'wpmentor_schedule_create_draft' );
function wpmentor_create_daily_draft_callback() {
$new_post = array(
'post_title' => 'Ежедневный черновик ' . date('Y-m-d'),
'post_content' => 'Это автоматически созданный черновик.',
'post_status' => 'draft',
'post_author' => 1,
'post_type' => 'post',
);
wp_insert_post( $new_post );
}
add_action( 'wpmentor_create_daily_draft', 'wpmentor_create_daily_draft_callback' );Этот код проверяет, есть ли уже запланированная задача, и если нет — создаёт её. Функция wpmentor_create_daily_draft_callback создаёт новый пост со статусом «черновик» с текущей датой в заголовке. Вы можете менять post_type, post_author и другие параметры по своему усмотрению.
Как изменить частоту запуска задачи
WordPress по умолчанию поддерживает частоты: hourly (час), twicedaily (дважды в день), daily (раз в день). Если нужны нестандартные интервалы, можно добавить свои:
function wpmentor_custom_cron_schedules( $schedules ) {
$schedules['every_five_minutes'] = array(
'interval' => 300,
'display' => 'Каждые 5 минут'
);
return $schedules;
}
add_filter( 'cron_schedules', 'wpmentor_custom_cron_schedules' );И затем заменить 'daily' на 'every_five_minutes' при планировании задачи.
Автоматическое удаление старых черновиков — как настроить удаление по расписанию
Чтобы база данных не загромождалась, полезно удалять черновики старше определённого срока. Например, удалять все черновики, которым больше 30 дней.
Добавим новую задачу WP-Cron для удаления таких черновиков:
function wpmentor_schedule_delete_old_drafts() {
if ( ! wp_next_scheduled( 'wpmentor_delete_old_drafts_event' ) ) {
wp_schedule_event( time(), 'daily', 'wpmentor_delete_old_drafts_event' );
}
}
add_action( 'wp', 'wpmentor_schedule_delete_old_drafts' );
function wpmentor_delete_old_drafts_callback() {
$args = array(
'post_type' => 'post',
'post_status' => 'draft',
'date_query' => array(
array(
'column' => 'post_date',
'before' => '30 days ago',
),
),
'fields' => 'ids',
'posts_per_page' => -1,
);
$old_drafts = get_posts( $args );
foreach ( $old_drafts as $post_id ) {
wp_delete_post( $post_id, true );
}
}
add_action( 'wpmentor_delete_old_drafts_event', 'wpmentor_delete_old_drafts_callback' );Этот код выполняет поиск всех черновиков старше 30 дней и удаляет их без возможности восстановления (true во втором параметре wp_delete_post означает принудительное удаление).
Как проверить и очистить запланированные задачи WP-Cron
Для отладки полезно использовать плагины вроде WP Crontrol. С ним можно просматривать, запускать и удалять задачи, а также создавать новые через интерфейс.
Рекомендации по плагинам для расширенной автоматизации черновиков
Если не хочется писать код, можно использовать готовые решения. Например, плагин Clearfy Pro позволяет управлять различными автоматизациями и оптимизациями, включая работу с черновиками.
Также можно комбинировать WP-Cron с плагинами для создания шаблонов записей, например, WPRemark, чтобы создавать черновики с заранее заполненным контентом и метаданными.
Особенности и подводные камни использования WP-Cron
WP-Cron зависит от посещаемости сайта: если трафик низкий, задачи могут запускаться с задержками. Для сайтов с высокой нагрузкой рекомендуют отключать WP-Cron и настраивать системный cron на сервере для вызова wp-cron.php по расписанию.
Также следите, чтобы задачи не выполнялись слишком часто — это может замедлить сайт. Используйте кэширование и оптимизируйте код callback-функций.
Заключение и лучшие практики
Автоматизация создания и удаления черновиков с помощью WP-Cron — мощный инструмент для поддержания порядка в контенте и оптимизации базы данных. Главное — грамотно спланировать расписание задач и протестировать их работу в разных условиях.
Примеры кода, приведённые в статье, можно адаптировать под свои нужды, расширять и комбинировать с плагинами из каталога WPSHOP.ru для повышения эффективности управления сайтом на WordPress.