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

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

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

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

  • Увеличению размера базы данных.
  • Замедлению работы админ-панели.
  • Затруднениям при поиске актуальных материалов.

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

Автоматизация процесса удаления

Удалять черновики вручную — неудобно и требует времени. Лучше автоматизировать этот процесс с помощью WP-Cron и собственного кода или специальных плагинов. Далее рассмотрим оба варианта.

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

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

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

function wpkit_delete_old_drafts() {
    global $wpdb;
    $days = 30; // количество дней
    $date_threshold = 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_modified < %s",
        $date_threshold
    ));

    if (!empty($drafts)) {
        foreach ($drafts as $draft_id) {
            wp_delete_post($draft_id, true); // true для полного удаления
        }
    }
}

Шаг 2. Регистрируем задачу в WP-Cron

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

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

add_action('wpkit_daily_delete_old_drafts', 'wpkit_delete_old_drafts');

Шаг 3. Очистка при деактивации

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

function wpkit_clear_schedule() {
    $timestamp = wp_next_scheduled('wpkit_daily_delete_old_drafts');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpkit_daily_delete_old_drafts');
    }
}
register_deactivation_hook(__FILE__, 'wpkit_clear_schedule');

Такой код обеспечит автоматическое удаление всех черновиков старше 30 дней один раз в сутки.

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

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

Плагин WP-Sweep

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

  • Простой интерфейс.
  • Можно выбрать, что именно удалять.
  • Поддержка регулярного запуска через WP-Cron с помощью дополнительных плагинов.

Установить можно через официальный репозиторий WordPress: https://wordpress.org/plugins/wp-sweep/

Плагин Clearfy Pro

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

  • Позволяет настроить автоматическую очистку.
  • Улучшает общую производительность WordPress.
  • Включает другие полезные функции для работы с сайтом.

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

Используйте пользовательские статусы записей

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

function wpkit_delete_old_drafts_exclude_custom() {
    global $wpdb;
    $days = 30;
    $date_threshold = date('Y-m-d H:i:s', strtotime("-{$days} days"));

    $drafts = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_modified < %s",
        $date_threshold
    ));

    foreach ($drafts as $draft_id) {
        $post = get_post($draft_id);
        if ($post->post_status !== 'my_custom_status') {
            wp_delete_post($draft_id, true);
        }
    }
}

Регулярно проверяйте базу данных

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

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

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

Итог

Автоматизация удаления старых черновиков — простой и эффективный способ поддерживать WordPress в хорошем состоянии. Вы можете реализовать её через собственный код с использованием WP-Cron или воспользоваться плагинами, такими как WP-Sweep или Clearfy Pro. Не забывайте об осторожности: обязательно тестируйте решения на тестовом сайте и делайте бэкапы.

Как сделать отложенный запуск задач в WordPress с помощью WP-Cron
13.12.2025
Как создать автоматический импорт из файлов CSV в WordPress
11.03.2026
Решение проблемы: не работает корзина WooCommerce после обновления
25.04.2026
Как использовать OmniVideo для автоматической вставки видео в WordPress
25.02.2026
Как правильно очистить кеш WooCommerce после обновления сайта
19.05.2026