В процессе работы с WordPress накапливается множество черновиков, которые занимают место в базе данных и могут негативно влиять на скорость и производительность сайта. Особенно это актуально для проектов с большим количеством авторов или регулярно обновляемым контентом. В этой статье мы подробно рассмотрим, как настроить автоматическое удаление старых черновиков в WordPress, чтобы поддерживать базу данных в чистоте и избежать лишней нагрузки.
Почему важно удалять старые черновики в WordPress
Черновики — это записи, которые не были опубликованы. Они сохраняются в базе данных и остаются там до тех пор, пока их не удалят вручную или автоматически. Если не контролировать количество черновиков, со временем их может накопиться очень много. Это приводит к следующим проблемам:
- Увеличение размера базы данных. Большое количество черновиков занимает лишнее место и замедляет операции с базой.
- Замедление работы административной панели. Особенно при открытии раздела «Записи» или «Все записи» с большим числом черновиков.
- Потеря контроля над контентом. Старые и ненужные записи могут мешать ориентироваться авторам и редакторам.
Регулярное удаление старых черновиков помогает избежать этих проблем и поддерживать сайт в хорошем техническом состоянии.
Настройка автоматического удаления черновиков с помощью WPCheckerClearfy Pro
Если вы используете плагин Clearfy Pro, то в нем есть удобная функция для автоматической очистки базы данных от неиспользуемых данных, включая старые черновики.
Для настройки автоматического удаления выполните следующие шаги:
- Установите и активируйте плагин Clearfy Pro.
- Перейдите в раздел Clearfy Pro в административной панели.
- В настройках базы данных найдите опцию «Автоматическая очистка черновиков».
- Установите периодичность, например, удалять черновики старше 30 дней.
- Сохраните настройки.
После этого плагин будет автоматически удалять все черновики, которые старше указанного срока, освобождая базу данных и ускоряя сайт.
Реализация автоматического удаления черновиков через кастомный код
Если вы предпочитаете более гибкий и легковесный способ без установки плагинов, можно добавить в файл functions.php вашей темы или создать собственный мини-плагин следующий код. Он удалит все черновики старше 30 дней по крону WordPress.
function wpchecker_delete_old_drafts() {
global $wpdb;
$date_threshold = date('Y-m-d H:i:s', strtotime('-30 days'));
$drafts = $wpdb->get_results(
$wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s",
$date_threshold
)
);
if (!empty($drafts)) {
foreach ($drafts as $draft) {
wp_delete_post($draft->ID, true); // true для безвозвратного удаления
}
}
}
// Добавляем событие в крон
if (!wp_next_scheduled('wpchecker_daily_delete_old_drafts')) {
wp_schedule_event(time(), 'daily', 'wpchecker_daily_delete_old_drafts');
}
// Хук для выполнения функции
add_action('wpchecker_daily_delete_old_drafts', 'wpchecker_delete_old_drafts');Данный код создает ежедневное задание, которое ищет все черновики старше 30 дней и удаляет их безвозвратно. Вы можете изменить период, заменив '-30 days' на нужное значение, например, '-60 days'.
Как остановить автоматическое удаление
Если потребуется отключить эту функцию, просто удалите или закомментируйте вызовы wp_schedule_event и add_action в коде, а также удалите запланированное событие вручную через WP-CLI или плагин для управления кроном.
Использование WP-CLI для удаления старых черновиков
Альтернативный вариант — использовать WP-CLI, инструмент командной строки для управления WordPress. Это особенно удобно на серверах с доступом к SSH.
Для удаления черновиков старше 30 дней выполните следующую команду:
wp post delete $(wp post list --post_type='post' --post_status='draft' --field=ID --date_query_column=post_date --date_query_after='30 days ago')Можно настроить cron-задачу на сервере, которая будет запускать эту команду ежедневно или с нужной вам периодичностью. Это позволит автоматизировать очистку без добавления кода в сайт.
Рекомендации по безопасному удалению черновиков
Перед тем как настроить автоматическое удаление, учтите следующие моменты:
- Резервное копирование. Всегда делайте резервные копии базы данных перед массовым удалением данных, чтобы иметь возможность восстановить информацию в случае ошибки.
- Проверка нужных записей. Убедитесь, что вы не удаляете черновики, над которыми ведется активная работа.
- Логирование действий. Желательно вести лог удалений, чтобы отслеживать, какие записи были удалены.
Эти меры помогут избежать потери важной информации и сохранить стабильность сайта.
Заключение
Автоматическое удаление старых черновиков — простой, но эффективный способ поддерживать WordPress-сайт в порядке и улучшать производительность. Выбор метода зависит от ваших предпочтений и уровня доступа к серверу: можно использовать готовые решения, такие как Clearfy Pro, написать собственный код или применять WP-CLI. Главное — не забывать регулярно очищать базу данных и делать резервные копии.