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

Работа с черновиками – важная часть управления контентом в WordPress. Иногда возникает необходимость автоматизировать процессы создания и удаления черновиков, чтобы облегчить работу редакторов или оптимизировать базу данных сайта. В этой статье рассмотрим, как с помощью плагинов и пользовательских функций автоматически создавать черновики по расписанию и удалять устаревшие черновики, используя примеры кода и лучшие практики.

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

Черновики позволяют сохранять незавершённые или планируемые публикации, но со временем их количество может неуклонно расти, захламляя базу данных и усложняя администрирование. Автоматизация помогает:

  • Снизить ручной труд по созданию заготовок контента;
  • Избавиться от устаревших и ненужных черновиков, сохраняя чистоту базы данных;
  • Поддерживать порядок и актуальность в списке публикаций;
  • Улучшить производительность сайта за счёт уменьшения объёма данных.

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

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

Пример функции для автоматического создания черновика

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

// Запускаем функцию один раз в день
if (! wp_next_scheduled('wp5_daily_draft_event')) {
    wp_schedule_event(time(), 'daily', 'wp5_daily_draft_event');
}
add_action('wp5_daily_draft_event', 'wp5_create_scheduled_draft');

В этом коде мы добавляем задачу в планировщик WP Cron, которая ежедневно создаёт новый черновик с уникальным названием и фиксированным содержимым. Вы можете адаптировать содержимое и частоту под свои нужды.

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

Если вы не хотите писать код, можно использовать плагины, например, Auto Post Scheduler. Он позволяет автоматически публиковать или создавать посты и черновики с заданной периодичностью и условиями.

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

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

Пример функции для удаления черновиков старше 30 дней

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

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

    foreach ($drafts as $draft) {
        wp_delete_post($draft->ID, true); // true - без перемещения в корзину
    }
}

// Планируем еженедельное выполнение
if (! wp_next_scheduled('wp5_weekly_delete_drafts')) {
    wp_schedule_event(time(), 'weekly', 'wp5_weekly_delete_drafts');
}
add_action('wp5_weekly_delete_drafts', 'wp5_delete_old_drafts');

Этот скрипт ищет все черновики старше 30 дней и удаляет их без возможности восстановления (без помещения в корзину). Частоту запуска можно скорректировать под свои нужды.

Плагины для удаления черновиков

Для тех, кто не хочет писать код, подойдёт плагин Cleanup Optimizer, позволяющий удалять старые черновики и оптимизировать базу данных в один клик или по расписанию.

Комбинированное решение: автоматизация создания и удаления черновиков

Можно объединить оба сценария для полной автоматизации. Добавьте код создания черновиков и удаления старых в functions.php вашей темы или в собственный плагин. Это обеспечит регулярное пополнение черновиков и очистку устаревших записей.

Кроме того, если на вашем сайте используется плагин My Popup от WPSHOP, вы можете автоматически создавать черновики с анонсами всплывающих окон для тестирования и удалять устаревшие заготовки.

Практические рекомендации и советы

  • Всегда тестируйте код на локальном или тестовом сервере, чтобы избежать потери данных;
  • Резервное копирование базы данных перед автоматическими удалениями – обязательное условие;
  • При использовании WP Cron учитывайте, что он запускается при посещении сайта, что может влиять на точность расписания;
  • Для критически важных задач лучше настроить системный cron с вызовом wp-cron.php;
  • Используйте метаданные или пользовательские поля, если нужно более гибко фильтровать черновики для удаления.

Пример расширенного фильтра с пользовательским полем

function wp5_delete_custom_old_drafts() {
    $args = [
        'post_type' => 'post',
        'post_status' => 'draft',
        'meta_query' => [
            [
                'key' => '_wp5_custom_flag',
                'value' => '1',
                'compare' => '='
            ]
        ],
        'date_query' => [
            [
                'column' => 'post_date',
                'before' => '30 days ago'
            ]
        ],
        'fields' => 'ids',
        'nopaging' => true
    ];
    $drafts = get_posts($args);
    foreach ($drafts as $draft_id) {
        wp_delete_post($draft_id, true);
    }
}

Такой подход позволяет удалять только те черновики, которые вы пометили специальным метаполем, например, автоматически созданные для внутреннего использования.

Как создать автоматический импорт выставок в WordPress
12.04.2026
Как избежать конфликтов между плагинами в WordPress
12.02.2026
Как изменить авторские права в футере WordPress
30.03.2026
WooCommerce: как автоматически изменять стоимость товара при изменении атрибутов
16.07.2026
WooCommerce: как создать автозаполняемые поля в форме оформления заказа
24.05.2026