Как автоматизировать создание и удаление черновиков в WordPress с помощью WP-Cron

Что такое 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.

Как настроить автоматическое удаление спам-комментариев в WordPress
28.12.2025
Как создать динамические таблицы в WordPress с помощью shortcode
10.12.2025
Почему в WooCommerce не работает промокод и как это исправить
18.04.2026
Как использовать WPRemark для автоматического сбора отзывов на сайте WordPress
06.01.2026
Как сделать динамический фильтр товаров в WooCommerce без плагинов
03.01.2026