В процессе ведения сайта на WordPress часто накапливаются черновики записей, которые уже не нужны: забытые идеи, тестовые материалы или устаревшие заметки. Такие черновики занимают место в базе данных, замедляют работу административной панели и усложняют навигацию. В этой статье мы подробно рассмотрим, как автоматизировать удаление старых черновиков с помощью кода и плагинов, чтобы поддерживать ваш сайт в порядке и оптимизировать его работу.
Почему важно удалять старые черновики в WordPress
Черновики — это записи, которые не опубликованы и не видны посетителям сайта. Большинство администраторов оставляют их на потом, но если не контролировать их количество, это может привести к:
- Увеличению размера базы данных, что снижает производительность сайта.
- Загромождению административной панели лишними записями, усложняя поиск нужных материалов.
- Риску накопления устаревшей информации, которая может случайно быть опубликована.
Регулярное удаление старых черновиков — важная часть технического обслуживания сайта.
Как определить «старые» черновики: критерии выбора
Прежде чем автоматизировать удаление, нужно определить, что считать «старым» черновиком. Обычно используют следующие параметры:
- Возраст черновика — например, удалить все черновики старше 30 или 60 дней.
- Отсутствие изменений — записи, которые не редактировались длительное время.
- Авторство — можно ограничить удаление черновиков определённого пользователя.
В нашем примере мы сфокусируемся на удалении черновиков, которым больше 30 дней, поскольку это наиболее универсальный и простой критерий.
Автоматическое удаление старых черновиков с помощью PHP-кода
Самый гибкий способ — добавить кастомный код в файл functions.php вашей темы или создать собственный плагин. Мы напишем функцию, которая будет запускаться по расписанию с помощью WP-Cron и удалять все черновики старше 30 дней.
Шаг 1. Добавляем планировщик задачи
function wplite_schedule_old_drafts_cleanup() {
if (!wp_next_scheduled('wplite_cleanup_old_drafts_hook')) {
wp_schedule_event(time(), 'daily', 'wplite_cleanup_old_drafts_hook');
}
}
add_action('wp', 'wplite_schedule_old_drafts_cleanup');Эта функция проверяет, запланирована ли уже задача на ежедневное выполнение, и если нет — создаёт её.
Шаг 2. Создаём функцию удаления черновиков
function wplite_delete_old_drafts() {
global $wpdb;
$days = 30; // Порог в днях
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
// Получаем ID всех черновиков старше 30 дней
$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 $post_id) {
wp_delete_post($post_id, true); // true — без перемещения в корзину
}
}
}
add_action('wplite_cleanup_old_drafts_hook', 'wplite_delete_old_drafts');В этой функции мы через прямой запрос к базе данных получаем все черновики старше 30 дней и удаляем их без возможности восстановления.
Шаг 3. Тестирование и мониторинг
После добавления кода рекомендуем вручную запустить функцию wplite_delete_old_drafts() для теста, например, через временный вызов или WP-CLI, чтобы убедиться, что удаление работает корректно. Также следите за логами ошибок и корректностью работы сайта.
Использование плагинов для удаления старых черновиков
Если вы не хотите работать с кодом, можно использовать готовые решения. Вот несколько популярных плагинов для управления и очистки черновиков:
- WP Bulk Delete — мощный инструмент для массового удаления записей по разным критериям, включая возраст и статус.
- Advanced Database Cleaner — позволяет оптимизировать базу данных, удаляя устаревшие ревизии и черновики.
- Delete Expired Transients — хотя плагин ориентирован на очистку устаревших транзиентов, некоторые версии поддерживают удаление старых черновиков.
Например, в WP Bulk Delete можно настроить фильтр по статусу «черновик» и дате создания, чтобы быстро очистить накопившиеся записи.
Как интегрировать очистку черновиков с плагином Clearfy Pro
Если вы используете на сайте Clearfy Pro, то часть задач по оптимизации и очистке базы данных уже реализована. В Clearfy есть модуль для удаления ревизий и устаревших данных, однако черновики подлежат отдельной очистке.
Можно расширить Clearfy, добавив наш собственный код удаления старых черновиков, или настроить WP Bulk Delete для регулярного запуска через WP-Cron.
Полезные советы по безопасности и работе с черновиками
Перед автоматическим удалением всегда делайте резервные копии базы данных, чтобы избежать потери важных данных. Используйте плагины резервного копирования, например, WPBackup.
Также рекомендуем информировать редакторов сайта о регулярной очистке черновиков, чтобы никто случайно не потерял незавершённые материалы.
Для дополнительного контроля можно добавить в админку уведомления о количестве старых черновиков и кнопку ручной очистки.
Выводы и рекомендации
Автоматизация удаления старых черновиков помогает поддерживать WordPress-сайт в чистоте и повышать производительность. Используйте приведённый код для создания собственной системы очистки или подключайте проверенные плагины. Не забывайте про резервное копирование и информирование команды.