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

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

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

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

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

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

Как определить «старые» черновики: критерии выбора

Прежде чем автоматизировать удаление, нужно определить, что считать «старым» черновиком. Обычно используют следующие параметры:

  • Возраст черновика — например, удалить все черновики старше 30 или 60 дней.
  • Отсутствие изменений — записи, которые не редактировались длительное время.
  • Авторство — можно ограничить удаление черновиков определённого пользователя.

В нашем примере мы сфокусируемся на удалении черновиков, которым больше 30 дней, поскольку это наиболее универсальный и простой критерий.

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

Самый гибкий способ — добавить кастомный код в файл functions.php вашей темы или создать собственный плагин. Мы напишем функцию, которая будет запускаться по расписанию с помощью WP-Cron и удалять все черновики старше 30 дней.

Шаг 1. Добавляем планировщик задачи

function wplite_schedule_old_drafts_cleanup() {
    if (!wp_next_scheduled('wplite_cleanup_old_drafts_hook')) {
        wp_schedule_event(time(), 'daily', 'wplite_cleanup_old_drafts_hook');
    }
}
add_action('wp', 'wplite_schedule_old_drafts_cleanup');

Эта функция проверяет, запланирована ли уже задача на ежедневное выполнение, и если нет — создаёт её.

Шаг 2. Создаём функцию удаления черновиков

function wplite_delete_old_drafts() {
    global $wpdb;
    $days = 30; // Порог в днях
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    // Получаем ID всех черновиков старше 30 дней
    $drafts = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_modified < %s",
        $date_threshold
    ));

    if (!empty($drafts)) {
        foreach ($drafts as $post_id) {
            wp_delete_post($post_id, true); // true — без перемещения в корзину
        }
    }
}
add_action('wplite_cleanup_old_drafts_hook', 'wplite_delete_old_drafts');

В этой функции мы через прямой запрос к базе данных получаем все черновики старше 30 дней и удаляем их без возможности восстановления.

Шаг 3. Тестирование и мониторинг

После добавления кода рекомендуем вручную запустить функцию wplite_delete_old_drafts() для теста, например, через временный вызов или WP-CLI, чтобы убедиться, что удаление работает корректно. Также следите за логами ошибок и корректностью работы сайта.

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

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

  • WP Bulk Delete — мощный инструмент для массового удаления записей по разным критериям, включая возраст и статус.
  • Advanced Database Cleaner — позволяет оптимизировать базу данных, удаляя устаревшие ревизии и черновики.
  • Delete Expired Transients — хотя плагин ориентирован на очистку устаревших транзиентов, некоторые версии поддерживают удаление старых черновиков.

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

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

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

Можно расширить Clearfy, добавив наш собственный код удаления старых черновиков, или настроить WP Bulk Delete для регулярного запуска через WP-Cron.

Полезные советы по безопасности и работе с черновиками

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

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

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

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

Автоматизация удаления старых черновиков помогает поддерживать WordPress-сайт в чистоте и повышать производительность. Используйте приведённый код для создания собственной системы очистки или подключайте проверенные плагины. Не забывайте про резервное копирование и информирование команды.

Как решить проблему неработающих скриптов в WordPress
16.02.2026
Как создать собственный шорткод в WordPress с поддержкой параметров
03.11.2025
Как автоматически удалять старые черновики в WordPress
04.04.2026
Удаление неиспользуемых таксономий в WordPress: практическое руководство
17.12.2025
Как отключить WooCommerce Cart Fragments для ускорения сайта
06.05.2026