WPCourse

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

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

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

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

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

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

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

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

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

Преимущества плагинов:

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

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

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

Добавим в файл functions.php вашей активной темы код, который будет удалять черновики старше 30 дней с помощью WordPress Cron:

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

    $query = $wpdb->prepare(
        "SELECT ID FROM $wpdb->posts WHERE post_status = 'draft' AND post_date < %s",
        $date_threshold
    );

    $old_drafts = $wpdb->get_col($query);

    foreach ($old_drafts as $post_id) {
        wp_delete_post($post_id, true); // принудительное удаление
    }
}

function wpcourse_schedule_draft_cleanup() {
    if (!wp_next_scheduled('wpcourse_cleanup_old_drafts_hook')) {
        wp_schedule_event(time(), 'daily', 'wpcourse_cleanup_old_drafts_hook');
    }
}

add_action('wpcourse_cleanup_old_drafts_hook', 'wpcourse_delete_old_drafts');
add_action('wp', 'wpcourse_schedule_draft_cleanup');

Этот код выполняет следующие задачи:

  • Функция wpcourse_delete_old_drafts() ищет все черновики старше 30 дней и удаляет их принудительно.
  • Функция wpcourse_schedule_draft_cleanup() создаёт ежедневное событие WordPress Cron, чтобы запускать очистку автоматически.

После добавления кода в functions.php старые черновики будут удаляться автоматически один раз в день.

Настройка периода удаления и безопасность

В коде выше период хранения чёрновиков задаётся переменной $days. Вы можете изменить её, например, на 60 или 90 дней, если хотите хранить их дольше. Главное — не ставить слишком маленькое значение, чтобы случайно не удалить актуальные записи.

Также важно понимать, что удаление происходит принудительно с помощью wp_delete_post($post_id, true) — записи удаляются окончательно, без помещения в корзину. Если хотите сначала перемещать черновики в корзину, уберите второй аргумент или замените его на false.

Дополнительные рекомендации и плагины для автоматизации

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

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

Автоматизация через плагин WPRemark

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

Выводы и что делать дальше

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

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее