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

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

Почему важно удалять старые черновики в WordPress

Черновики — это записи с типом post_status = 'draft'. Они создаются при написании и сохранении контента, но не публикуются. Если их накопилось слишком много, это приводит к нескольким проблемам:

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

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

Автоматическое удаление черновиков через WP-Cron

WordPress поддерживает встроенный планировщик задач WP-Cron, который можно использовать для регулярного запуска кастомных функций. Ниже пример функции, которая удаляет все черновики старше 30 дней, и регистрация задачи в WP-Cron.

Пример функции и регистрация cron-задачи

function wpstudy_delete_old_drafts() {
    global $wpdb;
    $days = 30; // количество дней старше которых удалять
    $date_threshold = date('Y-m-d H:i:s', strtotime("-" . $days . " days"));

    $query = $wpdb->prepare(
        "DELETE FROM $wpdb->posts WHERE post_status = %s AND post_type = %s AND post_date < %s",
        'draft', 'post', $date_threshold
    );

    $deleted = $wpdb->query($query);
    if ($deleted !== false) {
        error_log("[wpstudy] Удалено старых черновиков: " . $deleted);
    }
}

// Хук для запуска задачи
add_action('wpstudy_daily_drafts_cleanup', 'wpstudy_delete_old_drafts');

// Регистрация задачи при активации темы/плагина
function wpstudy_setup_cron_job() {
    if (!wp_next_scheduled('wpstudy_daily_drafts_cleanup')) {
        wp_schedule_event(time(), 'daily', 'wpstudy_daily_drafts_cleanup');
    }
}
add_action('wp', 'wpstudy_setup_cron_job');

// Очистка задачи при деактивации
function wpstudy_remove_cron_job() {
    $timestamp = wp_next_scheduled('wpstudy_daily_drafts_cleanup');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpstudy_daily_drafts_cleanup');
    }
}
// Например, подключить к деактивации плагина или темы
// register_deactivation_hook(__FILE__, 'wpstudy_remove_cron_job');

Этот код удаляет все черновики, которые были созданы более 30 дней назад. Запуск происходит раз в сутки благодаря WP-Cron. Для подключения в плагин или файл functions.php темы нужно добавить этот код, не забывая корректно регистрировать и удалять задачу при активации и деактивации.

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

Если вы не хотите писать свой код, можно использовать готовые плагины, которые автоматизируют удаление старых записей с определенным статусом.

Плагин WP Sweep

WP Sweep позволяет очистить базу данных от мусора, включая старые черновики. После установки и активации перейдите в панель «Инструменты »→ «Sweep», где можно выбрать очистку черновиков. Есть возможность запускать очистку автоматически через WP-Cron.

Плагин Advanced Database Cleaner

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

Как настроить удаление черновиков с помощью Clearfy Pro

Для пользователей плагина Clearfy Pro есть встроенные возможности оптимизации базы данных, включая удаление старых черновиков. В настройках плагина можно задать время хранения черновиков и включить автоматическую очистку.

Это удобный способ держать сайт в порядке без дополнительного кода и плагинов.

Советы по безопасному удалению черновиков

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

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

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

Как добавить собственные типы записей в WordPress: практическое руководство
23.12.2025
Удаление неиспользуемых полей в базе данных WordPress для оптимизации
26.01.2026
Как удалить дубликаты постов в WordPress
30.11.2025
Автоподгрузка постов в WordPress без плагинов
25.02.2026
Как правильно удалить пустые мета данные в WordPress для оптимизации базы данных
10.01.2026