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

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

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

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

Регулярное удаление устаревших черновиков помогает:

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

Удаление черновиков с помощью плагинов

Плагин WP-Optimize

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

Для настройки автоматического удаления черновиков:

  1. Установите и активируйте WP-Optimize с официального сайта.
  2. Перейдите в раздел Database и выберите опцию удаления черновиков.
  3. Настройте расписание автоматической оптимизации в разделе Settings > Scheduled clean-up.

Плагин Advanced Database Cleaner

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

Преимущества:

  • Можно выбрать сроки удаления (например, черновики старше 30 дней).
  • Просмотр и выбор конкретных записей перед удалением.
  • Поддержка мультисайтов.

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

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

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

function wproot_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_date < %s",
        $date_threshold
    ));

    if (!empty($drafts)) {
        foreach ($drafts as $post_id) {
            wp_delete_post($post_id, true); // true — без перемещения в корзину
        }
    }
}

// Запускаем функцию ежедневно через WP-Cron
if (!wp_next_scheduled('wproot_daily_delete_old_drafts')) {
    wp_schedule_event(time(), 'daily', 'wproot_daily_delete_old_drafts');
}
add_action('wproot_daily_delete_old_drafts', 'wproot_delete_old_drafts');

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

Как изменить период удаления

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

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

Оповещения о накоплении черновиков

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

function wproot_warn_about_drafts() {
    $count = wp_count_posts()->draft;
    $limit = 50; // порог
    if ($count > $limit) {
        echo '<div class="notice notice-warning is-dismissible">'
            . 'Внимание! На сайте накопилось ' . $count . ' черновиков. Рекомендуется их удалить для оптимизации.'
            . '</div>';
    }
}
add_action('admin_notices', 'wproot_warn_about_drafts');

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

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

Выводы и лучшие практики

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

  • Для большинства пользователей подойдут готовые плагины WP-Optimize или Advanced Database Cleaner.
  • Для опытных разработчиков простой и эффективный способ — добавить собственный код с использованием WP-Cron.
  • Обязательно делайте резервные копии базы данных перед массовым удалением записей.
  • Настройте уведомления, чтобы контролировать количество черновиков.

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как отключить Emoji в WordPress для ускорения сайта
15.02.2026
Оптимизация базы данных WordPress: успешные методы и примеры
01.11.2025
Как удалить meta tag generator в WordPress: практическое руководство
21.11.2025
Как добавить и сохранить кастомное поле пользователя при регистрации в WordPress
26.02.2026
Как удалить все очередные задачи в WordPress Cron: практическое руководство
09.11.2025
×
WordPress
прокачай свой сайт!

-20% на премиум темы и плагины

Сделай апгрейд сайта ⋙