Автоматическое создание и удаление черновиков WordPress по расписанию

В работе с WordPress часто возникает необходимость автоматически создавать или удалять черновики по расписанию. Это полезно для сайтов с большим объёмом контента, где нужно тестировать шаблоны постов, поддерживать чистоту базы данных и управлять накопившимися неактивными черновиками.

Зачем автоматизировать создание и удаление черновиков в WordPress

Ручное управление черновиками быстро становится неудобным при большом количестве постов. Автоматизация помогает:

  • Поддерживать базу данных в оптимальном состоянии, удаляя старые и ненужные черновики.
  • Создавать тестовые записи для проверки шаблонов, плагинов и новых функций.
  • Автоматически создавать заготовки для контента, который планируется публиковать в будущем.

Такая практика позволяет сэкономить время и ресурсы сервера, предотвращая накопление ненужных данных.

Автоматическое удаление старых черновиков: пример кода

Для удаления черновиков старше определённого числа дней можно использовать WP Cron и пользовательскую функцию. Ниже пример функции wpaddons_delete_old_drafts, которая удалит все черновики старше 30 дней.

function wpaddons_delete_old_drafts() {
    global $wpdb;
    $days = 30; // число дней
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $drafts = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s",
        $date_threshold
    ));

    if (!empty($drafts)) {
        foreach ($drafts as $draft_id) {
            wp_delete_post($draft_id, true); // true - удаляем без возможности восстановления
        }
    }
}

// Регистрируем событие в WP Cron при активации темы или плагина
if (!wp_next_scheduled('wpaddons_delete_old_drafts_hook')) {
    wp_schedule_event(time(), 'daily', 'wpaddons_delete_old_drafts_hook');
}

add_action('wpaddons_delete_old_drafts_hook', 'wpaddons_delete_old_drafts');

Этот код добавляет ежедневное событие, которое будет запускать удаление черновиков старше 30 дней. При необходимости период можно изменить на 'twicedaily' или 'hourly'.

Автоматическое создание черновиков по расписанию

Создание черновиков «на лету» полезно для предзаполнения сайта контентом или тестирования. Ниже пример функции wpaddons_create_scheduled_draft, создающей новый черновик с заданным заголовком и содержимым.

function wpaddons_create_scheduled_draft() {
    $new_post = array(
        'post_title'    => 'Автоматически созданный черновик ' . date('Y-m-d H:i:s'),
        'post_content'  => 'Это тестовый черновик, созданный автоматически.',
        'post_status'   => 'draft',
        'post_author'   => 1,
        'post_type'     => 'post'
    );

    wp_insert_post($new_post);
}

// Добавим событие в WP Cron для создания черновика ежедневно
if (!wp_next_scheduled('wpaddons_create_scheduled_draft_hook')) {
    wp_schedule_event(time(), 'daily', 'wpaddons_create_scheduled_draft_hook');
}

add_action('wpaddons_create_scheduled_draft_hook', 'wpaddons_create_scheduled_draft');

Вы можете настроить частоту и содержимое черновиков под свои задачи.

Использование плагинов для управления черновиками

Если вы предпочитаете не писать код, существуют плагины, которые помогут с автоматизацией:

  • WP Bulk Delete — позволяет массово удалять посты и черновики по разным условиям, включая дату.
  • Auto Post Scheduler — автоматически публикует или создаёт записи по расписанию, может помочь с черновиками.
  • Clearfy Pro — расширяет возможности оптимизации, включая управление неиспользуемыми черновиками и мусором.

Например, для WP Bulk Delete можно настроить удаление черновиков старше 30 дней через интерфейс плагина, что удобно для пользователей без навыков программирования.

Советы по безопасности и производительности

При автоматическом удалении черновиков стоит:

  • Тщательно тестировать код на тестовом сайте, чтобы не удалить важные данные.
  • Использовать WP Cron с разумной периодичностью, чтобы не создавать нагрузку на сервер.
  • Резервировать базу данных перед внедрением автоматизации удаления, на всякий случай.
  • Логировать действия удаления для контроля и отладки.

Для логирования можно добавить простую запись в файл или использовать системный журнал, например:

function wpaddons_delete_old_drafts() {
    global $wpdb;
    $days = 30;
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $drafts = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s",
        $date_threshold
    ));

    if (!empty($drafts)) {
        foreach ($drafts as $draft_id) {
            wp_delete_post($draft_id, true);
            error_log('Удалён черновик ID: ' . $draft_id);
        }
    }
}

Заключение

Автоматическое создание и удаление черновиков в WordPress — эффективный способ поддерживать сайт в порядке и оптимизировать рабочие процессы. Используя WP Cron и простые функции, можно реализовать гибкое управление черновиками без лишних плагинов. А для тех, кто предпочитает готовые решения, подойдут такие плагины, как WP Bulk Delete и Clearfy Pro.

Если хотите расширить функционал сайта дополнительными инструментами — обратите внимание на плагины и темы с WPSHOP.ru. Там есть решения, которые помогут автоматизировать и другие рутинные задачи WordPress.

Автоматическое удаление спама в комментариях WordPress
30.11.2025
Как отключить редактор Gutenberg для определённых ролей в WordPress
29.12.2025
Как создать собственный шорткод в WordPress
05.11.2025
Как создать автоматический импорт продуктов в WooCommerce
15.04.2026
Автоматическое создание и удаление записей в WordPress по расписанию
06.04.2026