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

|

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

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

Удаление старых черновиков помогает:

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

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

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

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

function wpzoom_delete_old_drafts() {
    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
    ));

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

// Создаём событие, если его ещё нет
if (!wp_next_scheduled('wpzoom_daily_delete_old_drafts')) {
    wp_schedule_event(time(), 'daily', 'wpzoom_daily_delete_old_drafts');
}

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

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

Как отключить задачу и удалить планировщик

Если понадобится отключить автоматическое удаление, используйте следующий код:

function wpzoom_remove_old_drafts_cron() {
    $timestamp = wp_next_scheduled('wpzoom_daily_delete_old_drafts');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpzoom_daily_delete_old_drafts');
    }
}
// Вызовите эту функцию один раз для удаления задачи
// wpzoom_remove_old_drafts_cron();

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

Плагин WP Sweep

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

Для автоматизации удаления старых черновиков можно настроить WP Sweep в связке с WP Crontrol для планирования задач.

Плагин Clearfy Pro

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

Подробнее о Clearfy Pro и его возможностях можно узнать на официальной странице.

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

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

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

Пример тестовой функции для вывода черновиков старше 30 дней:

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

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

    if (!empty($drafts)) {
        foreach ($drafts as $draft) {
            echo 'ID: ' . $draft->ID . ', Title: ' . esc_html($draft->post_title) . ', Modified: ' . $draft->post_modified . "<br>";
        }
    } else {
        echo 'Старых черновиков не найдено.';
    }
}

После проверки можно заменить вызов wpzoom_get_old_drafts() на wpzoom_delete_old_drafts() для удаления.

WooCommerce: автоматическое обновление остатков товаров при продаже
27.05.2026
Как использовать выпадающие списки в WordPress своими руками: примеры и код
14.04.2026
Создать собственный виджет WordPress: подробное руководство с примерами кода
08.11.2025
Как сделать автоматическое удаление старых мета данных в WordPress
11.04.2026
Автоматическое удаление старых файлов из медиа библиотеки WordPress
10.02.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше