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

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

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

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

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

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

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

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

Плагин WP-Sweep

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

После установки перейдите в раздел «Sweep» в админке и выберите опцию очистки черновиков. Можно выполнять очистку вручную или настроить автоматические задачи через WP-Cron.

Плагин Auto Delete Posts

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

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

Как написать собственную функцию для удаления старых черновиков в WordPress

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

<?php
function wptask_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 — удаляем навсегда
        }
    }
}

// Запускаем функцию раз в сутки с помощью WP-Cron
add_action('wptask_daily_cleanup', 'wptask_delete_old_drafts');

// Регистрируем событие при активации темы или плагина
function wptask_schedule_cleanup() {
    if (!wp_next_scheduled('wptask_daily_cleanup')) {
        wp_schedule_event(time(), 'daily', 'wptask_daily_cleanup');
    }
}
add_action('wp', 'wptask_schedule_cleanup');

// Очищаем cron при деактивации
function wptask_clear_cleanup_schedule() {
    $timestamp = wp_next_scheduled('wptask_daily_cleanup');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wptask_daily_cleanup');
    }
}
register_deactivation_hook(__FILE__, 'wptask_clear_cleanup_schedule');
?>

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

Использование WP-CLI для очистки черновиков

Если у вас есть доступ к серверу и установлен WP-CLI, можно быстро удалить старые черновики через командную строку.

Команда для удаления всех черновиков:

wp post delete $(wp post list --post_type='post' --post_status='draft' --format=ids)

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

Использование WP-CLI удобно для администраторов, которые регулярно делают обслуживание сайта вручную или через скрипты.

Оптимизация базы данных после удаления черновиков

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

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

Для ручной оптимизации можно использовать SQL-запросы через phpMyAdmin или WP-CLI:

OPTIMIZE TABLE wp_posts;

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

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

Автоматическое сохранение и ревизии

WordPress по умолчанию сохраняет автоматические черновики и ревизии. Если вы хотите уменьшить количество ревизий, добавьте в wp-config.php:

define('WP_POST_REVISIONS', 3); // хранить максимум 3 ревизии

Это поможет снизить нагрузку на базу данных.

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

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

Резервное копирование перед удалением

Перед массовым удалением черновиков обязательно сделайте резервную копию сайта. Для этого можно использовать плагин Backup Plugin или аналогичные решения.

Это защитит вас от случайной потери важных данных.

Как удалить старые ревизии записей WordPress для оптимизации базы данных
29.12.2025
WooCommerce: автоматическое удаление неоплаченных заказов через 24 часа
01.06.2026
WooCommerce: автоматическое отслеживание статусов заказов через REST API
06.05.2026
Как создать автоматический импорт продуктов в WordPress через REST API
19.12.2025
Автоматический импорт новостей в WordPress из внешнего источника
23.03.2026