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

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

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

Черновики — это посты, которые не были опубликованы, но при этом сохраняются в базе данных. Со временем их количество может вырасти до сотен и даже тысяч, если регулярно создаются и не удаляются неиспользуемые записи. Это приводит к:

  • увеличению размера базы данных;
  • замедлению работы административной панели;
  • усложнению навигации и управлению контентом;
  • повышенному риску конфликтов плагинов или ошибок при резервном копировании.

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

Удаление старых черновиков через код: пример функции для wplog.ru

Для автоматического удаления черновиков старше определённого количества дней можно добавить кастомную функцию в файл functions.php вашей темы или в небольшой плагин. Ниже пример функции с префиксом wplog, которая удаляет все черновики старше 30 дней.

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

    // Получаем ID черновиков старше $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 $post_id) {
            wp_delete_post($post_id, true); // true - удалить навсегда
        }
    }
}

// Добавим задачу в планировщик WP для запуска раз в сутки
if (!wp_next_scheduled('wplog_daily_delete_old_drafts')) {
    wp_schedule_event(time(), 'daily', 'wplog_daily_delete_old_drafts');
}
add_action('wplog_daily_delete_old_drafts', 'wplog_delete_old_drafts');

Эта функция выполнит выборку всех черновиков, созданных более 30 дней назад, и удалит их безвозвратно. Планировщик WordPress (WP-Cron) запустит её автоматически каждый день.

Как настроить функцию под свои нужды

Вы можете изменить переменную $days на любое другое количество дней, чтобы удалять черновики старше нужного срока. Также при необходимости можно добавить дополнительные условия фильтрации, например, по автору или категории.

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

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

1. WP Sweep

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

2. Auto Delete Posts

Auto Delete Posts — более специализированный плагин, который позволяет автоматически удалять записи по заданным условиям, включая статус поста и возраст. В настройках можно задать удаление черновиков старше определенного количества дней.

3. Clearfy Pro

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

Как интегрировать автоматическое удаление черновиков с WPExpert Review

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

Пример функции с префиксом wplog, удаляющей черновики постов с типом wpexpert_review, старше 15 дней:

function wplog_delete_old_wpexpert_review_drafts() {
    global $wpdb;
    $days = 15;
    $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_type = 'wpexpert_review' AND post_date < %s",
        $date_threshold
    ));

    if (!empty($drafts)) {
        foreach ($drafts as $post_id) {
            wp_delete_post($post_id, true);
        }
    }
}

if (!wp_next_scheduled('wplog_daily_delete_old_wpexpert_review_drafts')) {
    wp_schedule_event(time(), 'daily', 'wplog_daily_delete_old_wpexpert_review_drafts');
}
add_action('wplog_daily_delete_old_wpexpert_review_drafts', 'wplog_delete_old_wpexpert_review_drafts');

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

Рекомендации по безопасности и оптимизации

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

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

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

Итог: автоматизация удаления старых черновиков — залог чистой базы WordPress

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

Как удалить неиспользуемые теги в WordPress с помощью кода
05.02.2026
Как удалить категорию в WordPress с помощью кода
17.12.2025
Как удалить все посты из категории в WordPress: практическое руководство
17.11.2025
Ограничение количества категорий для постов в WordPress: практическое руководство
24.01.2026
Как создать автоматические отчёты в WordPress с помощью WPExpert Review
07.01.2026