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

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

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

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

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

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

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

Обычно под «старыми» понимаются черновики, которые не обновлялись или не редактировались длительное время — например, более 30 или 60 дней назад. Этот период можно настроить под свои нужды.

Также можно учитывать:

  • Авторство черновика — удалять только у определённых пользователей;
  • Категории или типы записей — например, удалять только черновики новостей, оставляя другие;
  • Дополнительные метаданные, если они заданы, для более точного отбора.

Автоматическое удаление старых черновиков через код: пример для functions.php

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

function wordpressy_auto_delete_old_drafts() {
    global $wpdb;
    $days = 30; // Период в днях
    $cutoff_date = date('Y-m-d H:i:s', strtotime("-{$days} days"));

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

    if (empty($drafts)) {
        return;
    }

    foreach ($drafts as $post_id) {
        wp_delete_post($post_id, true); // Полное удаление без перемещения в корзину
    }
}

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

Этот код создаёт ежедневное запланированное событие, которое автоматически очищает базу от старых черновиков. Вы можете изменить период в переменной $days по своему усмотрению.

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

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

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

Все эти плагины можно найти и скачать с официального репозитория WordPress, а также на https://wpshop.ru/ с удобной сортировкой и дополнительными возможностями.

Дополнительные советы по работе с черновиками и базой данных

1. Регулярное резервное копирование

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

2. Контроль доступа к созданию черновиков

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

3. Мониторинг состояния базы данных

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

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

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

Как настроить отложенный запуск задач в WordPress без WP-Cron
12.02.2026
Автоматическое изменение стоимости товара в WooCommerce при изменении атрибутов
07.05.2026
Как отладить проблемы с авторизацией через REST API в WordPress
20.03.2026
Как использовать WP REST API для автоматического обновления товаров WooCommerce
01.05.2026
Как создать динамическую галерею в WordPress с помощью шорткода
13.01.2026