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

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

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

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

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

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

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

Чтобы автоматизировать процесс удаления, можно использовать WordPress cron — планировщик задач. Ниже приведён пример функции, которая удаляет черновики старше 30 дней. Добавьте этот код в файл functions.php вашей активной темы или создайте небольшой плагин.

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

    // Получаем ID черновиков, созданных ранее $date_threshold
    $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); // Полное удаление без перемещения в корзину
        }
    }
}

// Регистрируем cron задачу, если её ещё нет
if (!wp_next_scheduled('wplite_daily_delete_old_drafts')) {
    wp_schedule_event(time(), 'daily', 'wplite_daily_delete_old_drafts');
}

// Подключаем функцию к событию cron
add_action('wplite_daily_delete_old_drafts', 'wplite_delete_old_drafts');

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

Как проверить, что cron задача работает

Для контроля работы cron задач отлично подходит плагин WP Crontrol. Он позволяет просматривать, запускать и удалять запланированные задачи прямо из админки WordPress.

Установите плагин, перейдите в раздел Инструменты > Cron Events и найдите задачу wplite_daily_delete_old_drafts. Там вы можете запустить её вручную и убедиться, что старые черновики удаляются.

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

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

1. Clearfy Pro

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

2. WP-Optimize

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

3. Advanced Database Cleaner

Этот плагин позволяет гибко управлять очисткой базы данных, включая удаление старых черновиков. Помимо этого, он выявляет и удаляет неиспользуемые таблицы плагинов и темы. В бесплатной версии доступны базовые функции, а в PRO — расширенные настройки и автоматизация.

Как правильно настроить удаление черновиков, чтобы не потерять важные данные

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

  • Планируйте регулярные резервные копии. Это поможет восстановить данные в случае ошибки.
  • Устанавливайте адекватный срок хранения. Обычно 30 дней — хороший период, позволяющий вернуться к черновикам при необходимости.
  • Исключайте определённые записи из удаления. При необходимости можно доработать код, добавив фильтры по авторам или меткам, чтобы сохранять важные черновики.

Например, если хотите исключить из удаления черновики с определённой меткой, можно добавить условие в запрос:

AND ID NOT IN (
    SELECT object_id FROM $wpdb->term_relationships tr
    INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
    INNER JOIN $wpdb->terms t ON tt.term_id = t.term_id
    WHERE t.slug = 'ne-udaljat'
)

Этот код не удалит черновики, помеченные меткой ne-udaljat.

Выводы и рекомендации

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

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

Таким образом, вы сможете поддерживать ваш WordPress-сайт быстрым, чистым и готовым к работе с новым контентом без лишнего мусора.

Как решить проблему неработающих скриптов в WordPress
16.02.2026
Как отключить автопрозвон в WordPress при загрузке страницы
05.02.2026
Как автоматизировать удаление неактивных пользователей в WordPress
28.04.2026
Удаление заблокированных AdSense блоков в WordPress
20.02.2026
Как удалить или изменить атрибуты продуктов WooCommerce через код
25.04.2026