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

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

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

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

Рассмотрим, как настроить такую автоматизацию с помощью собственных скриптов и плагинов.

Создание функции для удаления старых черновиков через wp-cron

Подключение функции к системному планировщику WordPress

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

Ниже приведён пример функции wpfront_delete_old_drafts(), которая удаляет все черновики старше 30 дней:

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

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

    if (!empty($drafts)) {
        foreach ($drafts as $post_id) {
            wp_delete_post($post_id, true); // Удаляем навсегда
        }
    }
}

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

// Привязываем нашу функцию к событию
add_action('wpfront_daily_delete_old_drafts', 'wpfront_delete_old_drafts');

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

Как отключить задачу при деактивации темы или плагина

Чтобы не оставлять «мусор» в планировщике, важно отменять запланированное событие при деактивации:

function wpfront_unschedule_delete_old_drafts() {
    $timestamp = wp_next_scheduled('wpfront_daily_delete_old_drafts');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpfront_daily_delete_old_drafts');
    }
}

register_deactivation_hook(__FILE__, 'wpfront_unschedule_delete_old_drafts');

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

Плагины для автоматической очистки черновиков

Если вы не хотите писать код, можно воспользоваться готовыми плагинами:

  • WP-Sweep — позволяет чистить базу данных от неиспользуемых данных, включая старые черновики.
  • Auto Delete Drafts — плагин для автоматического удаления черновиков по заданному сроку.

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

Интеграция с плагином Clearfy Pro

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

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

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

Это можно сделать через phpMyAdmin командой:

OPTIMIZE TABLE wp_posts;

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

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

Как автоматически изменять атрибуты варианта товара в WooCommerce при изменении запаса
22.05.2026
WooCommerce: автоматическое отключение вариантов доставки при отсутствии товаров на складе
11.05.2026
Как удалить черновики в WordPress без плагинов
22.01.2026
WooCommerce: автоматическое отключение вариантов товара при отсутствии запаса
25.06.2026
WooCommerce: автоматическое отключение вариантов доставки при отсутствии товаров на складе
16.06.2026