В процессе работы с WordPress накапливается множество черновиков и устаревших записей, которые занимают место в базе данных и могут замедлять работу сайта. В этой статье мы подробно рассмотрим, как автоматически удалять старые черновики и записи, используя как готовые плагины, так и собственные решения с помощью кода. Это позволит вам поддерживать базу данных в оптимальном состоянии и улучшить производительность сайта.
Почему важно удалять старые черновики и записи
Со временем количество неиспользуемых черновиков и устаревших постов растет, особенно на крупных сайтах с активной редакторской работой. Это приводит к нескольким проблемам:
- Увеличение размера базы данных и замедление запросов.
- Сложности при поиске и управлении контентом в админке.
- Потенциальные проблемы при резервном копировании и миграции.
Регулярное удаление ненужных черновиков помогает поддерживать сайт в порядке и экономить ресурсы сервера.
Использование плагинов для автоматического удаления старого контента
Для тех, кто предпочитает готовые решения, существуют несколько плагинов, которые позволяют настроить автоматическую очистку базы данных от старых записей и черновиков.
Плагин WP-Sweep
WP-Sweep — популярный плагин для очистки базы данных. Он удаляет ревизии, черновики, спам-комментарии и многое другое.
После установки и активации плагина перейдите в Инструменты > Sweep, где можно запустить очистку вручную или настроить автоматические задачи через cron.
Плагин Auto Delete Posts
Auto Delete Posts позволяет автоматически удалять записи и черновики по заданным критериям, например, по дате создания.
В настройках можно указать, через сколько дней после создания запись будет удалена, а также какие типы записей и статусы следует учитывать.
Реализация удаления старых черновиков через код
Если вы хотите более гибко контролировать процесс и не зависеть от плагинов, можно написать собственную функцию для автоматического удаления черновиков и устаревших записей. Ниже приведен пример такого решения для сайта на домене wp-kurs.ru.
Функция для удаления черновиков старше 30 дней
function wp_kurs_delete_old_drafts() {
global $wpdb;
$days = 30; // количество дней, старше которых черновики будут удалены
$date_threshold = date('Y-m-d H:i:s', strtotime("-{$days} days"));
// Получаем ID черновиков старше указанного срока
$drafts = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s",
$date_threshold
));
if (!empty($drafts)) {
foreach ($drafts as $draft_id) {
wp_delete_post($draft_id, true); // true — удаляем без возможности восстановления
}
}
}
// Запускаем функцию через cron раз в день
add_action('wp_kurs_daily_cleanup', 'wp_kurs_delete_old_drafts');
if (!wp_next_scheduled('wp_kurs_daily_cleanup')) {
wp_schedule_event(time(), 'daily', 'wp_kurs_daily_cleanup');
}
Этот код создает задачу, которая ежедневно удаляет все черновики старше 30 дней. Вы можете изменить количество дней, подставив нужное значение в переменную $days.
Удаление опубликованных записей по метаданным
Иногда нужно удалять не только черновики, но и устаревшие опубликованные записи, например, если у них есть метка «архив» или определенное значение метаполя. Пример:
function wp_kurs_delete_old_archived_posts() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'meta_key' => 'status',
'meta_value' => 'archive',
'date_query' => array(
array(
'before' => '90 days ago',
),
),
'fields' => 'ids',
'posts_per_page' => -1,
);
$old_posts = get_posts($args);
foreach ($old_posts as $post_id) {
wp_delete_post($post_id, true);
}
}
add_action('wp_kurs_weekly_cleanup', 'wp_kurs_delete_old_archived_posts');
if (!wp_next_scheduled('wp_kurs_weekly_cleanup')) {
wp_schedule_event(time(), 'weekly', 'wp_kurs_weekly_cleanup');
}
Здесь удаляются опубликованные записи с метаполем status равным archive, которые старше 90 дней. Задача запускается раз в неделю.
Рекомендации по безопасной работе и резервному копированию
Перед внедрением автоматического удаления важно убедиться, что у вас есть резервные копии базы данных. В случае ошибки можно потерять важный контент. Для резервного копирования рекомендуем использовать проверенные плагины, например, BackupWP.
Также при тестировании функций удаления используйте режим отладки и проверяйте логи, чтобы убедиться, что удаляются только те записи, которые действительно нужно удалить.
Автоматизация очистки базы с помощью плагина Clearfy Pro
Для комплексного управления производительностью и очисткой базы можно использовать плагин Clearfy Pro. Он позволяет автоматически удалять ревизии, черновики, спам и другие ненужные элементы базы, а также оптимизировать сайт без написания кода.
В настройках Clearfy Pro можно задать расписание очистки и исключения, что удобно для регулярного поддержания базы данных в порядке.
Выводы и практические советы
Автоматическое удаление старых черновиков и записей — важный элемент поддержки производительности WordPress-сайта. Выбирайте между готовыми плагинами и кастомным кодом в зависимости от ваших задач и опыта.
Обязательно тестируйте любые автоматические задачи на тестовом сервере и делайте резервные копии. Правильно настроенная автоматизация поможет вам избежать накопления мусора и обеспечит стабильную работу сайта.