Ведение сайта на WordPress часто приводит к накоплению большого количества черновиков — записей, которые были созданы, но не опубликованы. Со временем они занимают место в базе данных, замедляют работу сайта и усложняют администрирование. В этой статье мы подробно разберём, как автоматизировать удаление старых черновиков в WordPress, чтобы поддерживать базу данных в чистоте и повысить производительность вашего сайта.
Почему важно удалять старые черновики в WordPress
Черновики — это полезный инструмент для работы над контентом, однако неиспользуемые и забытые записи могут негативно сказаться на сайте. Они:
- Увеличивают размер базы данных, что влияет на скорость запросов и загрузки страниц;
- Загромождают административную панель, усложняя поиск актуальных записей;
- Могут вызвать проблемы с резервным копированием и восстановлением;
- Отражаются на статистике и отчетах, создавая шум.
Регулярное удаление старых черновиков помогает поддерживать порядок и избавляет от ненужных данных.
Как определить, какие черновики удалять
Важно понимать, что не все черновики стоит удалять без разбора. Обычно удаляют записи, которые не обновлялись и не редактировались длительное время, например, более 30, 60 или 90 дней назад. Критерии могут быть разными в зависимости от специфики проекта, но основной подход — удалять «заброшенные» записи, которые вряд ли будут использованы.
Для этого используем дату последнего изменения записи (post_modified) и тип записи (post_status = draft).
Автоматизация удаления старых черновиков с помощью кода
Создание функции для удаления черновиков старше 30 дней
Чтобы автоматизировать процесс, мы напишем функцию, которая будет искать и удалять старые черновики. Далее подключим её к CRON-задаче, чтобы запускать автоматически.
function wpbusiness_delete_old_drafts() {
global $wpdb;
// Определяем дату, старше которой удаляем черновики
$date_threshold = date('Y-m-d H:i:s', strtotime('-30 days'));
// Получаем ID всех черновиков старше порога
$drafts = $wpdb->get_col( $wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_modified < %s",
$date_threshold
));
if (empty($drafts)) {
return;
}
// Удаляем по одному
foreach ($drafts as $post_id) {
wp_delete_post($post_id, true); // true - удалить без возможности восстановления
}
}
Регистрация задачи для автоматического запуска
Теперь добавим CRON-задачу, которая будет запускать нашу функцию раз в сутки.
function wpbusiness_schedule_delete_old_drafts() {
if (!wp_next_scheduled('wpbusiness_daily_delete_old_drafts')) {
wp_schedule_event(time(), 'daily', 'wpbusiness_daily_delete_old_drafts');
}
}
add_action('wp', 'wpbusiness_schedule_delete_old_drafts');
add_action('wpbusiness_daily_delete_old_drafts', 'wpbusiness_delete_old_drafts');
Этот код добавьте в файл functions.php вашей темы или в отдельный плагин. Он будет ежедневно запускать функцию удаления черновиков старше 30 дней.
Использование плагинов для управления черновиками
Если вы не хотите писать код, для автоматизации удаления черновиков подойдут плагины:
- WP Sweep — позволяет очищать базу данных от ненужных данных, включая старые черновики. Можно запускать вручную или настраивать регулярные очистки;
- Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wpbusiness.ru&utm_medium=article&utm_campaign=kak-avtomatizirovat-udaleniye-staryh-chemdzhey-v-wordpress) — оптимизационный плагин с функцией управления ревизиями и черновиками, позволяет установить лимиты и автоматизировать очистку;
- Advanced Database Cleaner — расширенный инструмент для очистки базы данных, включая удаление старых черновиков, планирование очисток.
Эти плагины помогут упростить задачу и подойдут для пользователей, предпочитающих графический интерфейс.
Дополнительные советы по оптимизации базы данных
Удаление старых черновиков — часть комплексной оптимизации базы данных. Рекомендуется также:
- Удалять старые ревизии записей, которые накапливаются при редактировании;
- Оптимизировать таблицы базы данных с помощью SQL-команды
OPTIMIZE TABLEлибо плагинов; - Регулярно делать резервные копии перед очисткой данных;
- Использовать кэширование и CDN для повышения производительности;
- Следить за плагинами, которые создают временные данные и удалять их при необходимости.
Такой комплексный подход обеспечит стабильную и быструю работу сайта.
Как контролировать и проверять результаты
После настройки автоматического удаления полезно проверять результаты и при необходимости корректировать параметры. Для этого можно:
- Включить логирование в функции удаления, чтобы видеть количество удалённых черновиков;
- Использовать плагины мониторинга базы данных и производительности;
- Проверять размер и количество записей в базе через инструменты phpMyAdmin или консоль;
- Оценивать скорость загрузки страниц и время отклика сервера.
Регулярный контроль поможет избежать случайного удаления нужных данных и оптимизировать процесс.
Заключение
Автоматизация удаления старых черновиков в WordPress — простое и эффективное решение для поддержания чистоты базы данных и улучшения производительности сайта. Используйте представленный код или надёжные плагины, настраивайте периодичность и регулярно контролируйте результаты. Это позволит сосредоточиться на развитии бизнес-сайта, не отвлекаясь на рутинные задачи по обслуживанию.