Ведение сайта на 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-сайт в порядке, снижая нагрузку на базу данных и упрощая управление контентом. Вы можете выбрать между использованием готовых плагинов или написать собственный код для гибкости и точного контроля.
Рекомендуется периодически проверять работу очистки и при необходимости корректировать настройки. Также полезно делать резервные копии базы данных перед внедрением подобных изменений.