В процессе активной работы с WordPress накапливается множество черновиков — незавершённых записей и страниц, которые занимают место в базе данных и могут замедлять работу сайта. Ручное удаление таких черновиков неудобно и долго, особенно если их сотни. В этой статье подробно рассмотрим, как автоматизировать удаление старых черновиков в WordPress с помощью простого кода и плагинов, а также разберём несколько полезных советов для оптимизации сайта.
Почему важно удалять старые черновики в WordPress
Черновики создаются при работе с записями и страницами, когда вы сохраняете материал, но не публикуете его. Если их не удалять, база данных постепенно разрастается, что приводит к:
- Увеличению размера базы данных, что замедляет запросы;
- Проблемам с бэкапами — резервные копии становятся больше и дольше создаются;
- Загромождению админки — список записей становится менее удобным;
- Потенциальным конфликтам плагинов и тем из-за старого мусора.
Автоматизация удаления старых черновиков поможет поддерживать чистоту и быстродействие сайта без лишних усилий.
Как определить «старый» черновик: критерии выбора
Обычно под «старыми» понимаются черновики, которые не обновлялись или не редактировались длительное время — например, более 30 или 60 дней назад. Этот период можно настроить под свои нужды.
Также можно учитывать:
- Авторство черновика — удалять только у определённых пользователей;
- Категории или типы записей — например, удалять только черновики новостей, оставляя другие;
- Дополнительные метаданные, если они заданы, для более точного отбора.
Автоматическое удаление старых черновиков через код: пример для functions.php
Приведём пример функции wordpressy_auto_delete_old_drafts(), которая удаляет черновики старше 30 дней. Код можно добавить в файл functions.php вашей темы или в отдельный подключаемый плагин.
function wordpressy_auto_delete_old_drafts() {
global $wpdb;
$days = 30; // Период в днях
$cutoff_date = date('Y-m-d H:i:s', strtotime("-{$days} days"));
// Получаем ID черновиков старше cutoff_date
$drafts = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_modified < %s",
$cutoff_date
));
if (empty($drafts)) {
return;
}
foreach ($drafts as $post_id) {
wp_delete_post($post_id, true); // Полное удаление без перемещения в корзину
}
}
// Запуск функции раз в день с помощью WP-Cron
if (!wp_next_scheduled('wordpressy_daily_delete_old_drafts')) {
wp_schedule_event(time(), 'daily', 'wordpressy_daily_delete_old_drafts');
}
add_action('wordpressy_daily_delete_old_drafts', 'wordpressy_auto_delete_old_drafts');Этот код создаёт ежедневное запланированное событие, которое автоматически очищает базу от старых черновиков. Вы можете изменить период в переменной $days по своему усмотрению.
Использование плагинов для удаления старых черновиков
Если вы не хотите добавлять код вручную, можно использовать плагины с похожим функционалом:
- WP-Sweep — позволяет очищать базу данных от мусора, включая черновики, с настройкой по времени и типам записей.
- Advanced Database Cleaner — мощный инструмент для оптимизации базы, удаляет старые ревизии, черновики и многое другое.
- Automatic Post Delete — специализированный плагин для автоматического удаления записей по определённым правилам, можно настроить на удаление черновиков старше заданного срока.
Все эти плагины можно найти и скачать с официального репозитория WordPress, а также на https://wpshop.ru/ с удобной сортировкой и дополнительными возможностями.
Дополнительные советы по работе с черновиками и базой данных
1. Регулярное резервное копирование
Перед автоматическим удалением записей всегда стоит иметь свежую резервную копию базы данных. Это поможет избежать потери важных материалов по ошибке.
2. Контроль доступа к созданию черновиков
Ограничьте пользователей, которые могут создавать записи, если количество черновиков растёт слишком быстро. Это поможет держать порядок в админке.
3. Мониторинг состояния базы данных
Используйте плагины для мониторинга и оптимизации, например, Clearfy Pro, который может помочь автоматизировать очистку базы и улучшить производительность сайта.
Выводы и рекомендации
Автоматическое удаление старых черновиков — простой, но эффективный способ поддерживать базу данных WordPress в чистоте и порядке. Используйте приведённый код для базовой автоматизации или установите специализированные плагины для более гибкой настройки. Не забывайте про регулярные бэкапы и мониторинг состояния сайта, чтобы избежать потерь данных и обеспечить стабильную работу.