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

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

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

Со временем количество неиспользуемых черновиков и устаревших постов растет, особенно на крупных сайтах с активной редакторской работой. Это приводит к нескольким проблемам:

  • Увеличение размера базы данных и замедление запросов.
  • Сложности при поиске и управлении контентом в админке.
  • Потенциальные проблемы при резервном копировании и миграции.

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

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

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

Плагин WP-Sweep

WP-Sweep — популярный плагин для очистки базы данных. Он удаляет ревизии, черновики, спам-комментарии и многое другое.

После установки и активации плагина перейдите в Инструменты > Sweep, где можно запустить очистку вручную или настроить автоматические задачи через cron.

Плагин Auto Delete Posts

Auto Delete Posts позволяет автоматически удалять записи и черновики по заданным критериям, например, по дате создания.

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

Реализация удаления старых черновиков через код

Если вы хотите более гибко контролировать процесс и не зависеть от плагинов, можно написать собственную функцию для автоматического удаления черновиков и устаревших записей. Ниже приведен пример такого решения для сайта на домене wp-kurs.ru.

Функция для удаления черновиков старше 30 дней

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

    // Получаем ID черновиков старше указанного срока
    $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); // true — удаляем без возможности восстановления
        }
    }
}

// Запускаем функцию через cron раз в день
add_action('wp_kurs_daily_cleanup', 'wp_kurs_delete_old_drafts');

if (!wp_next_scheduled('wp_kurs_daily_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wp_kurs_daily_cleanup');
}

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

Удаление опубликованных записей по метаданным

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

function wp_kurs_delete_old_archived_posts() {
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'meta_key'       => 'status',
        'meta_value'     => 'archive',
        'date_query'     => array(
            array(
                'before' => '90 days ago',
            ),
        ),
        'fields'         => 'ids',
        'posts_per_page' => -1,
    );

    $old_posts = get_posts($args);

    foreach ($old_posts as $post_id) {
        wp_delete_post($post_id, true);
    }
}

add_action('wp_kurs_weekly_cleanup', 'wp_kurs_delete_old_archived_posts');

if (!wp_next_scheduled('wp_kurs_weekly_cleanup')) {
    wp_schedule_event(time(), 'weekly', 'wp_kurs_weekly_cleanup');
}

Здесь удаляются опубликованные записи с метаполем status равным archive, которые старше 90 дней. Задача запускается раз в неделю.

Рекомендации по безопасной работе и резервному копированию

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

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

Автоматизация очистки базы с помощью плагина Clearfy Pro

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

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

Выводы и практические советы

Автоматическое удаление старых черновиков и записей — важный элемент поддержки производительности WordPress-сайта. Выбирайте между готовыми плагинами и кастомным кодом в зависимости от ваших задач и опыта.

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

Как автоматически изменять мета-описание в WordPress
07.09.2026
Снимок данных WordPress в реальном времени: как вывести актуальную информацию без кэширования
03.10.2026
Как создать автоматический экспорт пользователей WordPress в CSV
07.09.2026
Как закрыть дубли архивов таксономий и авторов в WordPress без потери индексации
29.08.2026
Как создать динамические формы в WordPress с помощью WPRemark
07.09.2026

Как работать с WordPress: основы работы с движком, обзор встроенных функций, советы по созданию и редактированию контента.