Введение в проблему удаления старого контента
При активной работе сайта на WordPress со временем накапливается большое количество записей и страниц, которые уже не актуальны. Это может быть устаревший контент, акции, новости или обзоры, которые не интересны посетителям. Ручное удаление таких материалов занимает много времени, а забытые старые записи могут негативно влиять на SEO и производительность сайта.
Решение — автоматизация удаления старого контента по дате публикации. Это позволяет поддерживать сайт в актуальном состоянии и экономить время на администрирование.
В этой статье рассмотрим несколько методов, как автоматически удалять записи в WordPress по дате, используя готовые плагины и собственный код.
Использование плагинов для автоматического удаления старого контента
Плагин Auto Delete Posts
Один из удобных плагинов — Auto Delete Posts. Он позволяет настроить период, после которого записи будут удаляться автоматически. Плагин поддерживает выбор типов записей, категорий и статусов.
Основные возможности:
- Автоматическое удаление по возрасту публикации
- Выбор типов записей (записи, страницы, кастомные типы)
- Фильтрация по категориям и тегам
- Логирование удалений для контроля
После установки достаточно указать количество дней, например 180, и плагин будет удалять записи старше 6 месяцев.
Плагин WP Bulk Delete
WP Bulk Delete — более продвинутый плагин с возможностью массового удаления записей по множеству критериев, включая дату публикации.
Особенности:
- Удаление по дате (старше/моложе заданной даты)
- Удаление по категориям, тегам, статусу
- Возможность планирования задач через WP-Cron
- Удаление комментариев, пользователей
После настройки плагина можно запускать удаление вручную или настроить автоматический запуск по расписанию.
Как написать свой код для автоматического удаления старого контента
Если нужен более гибкий и контролируемый вариант, можно реализовать удаление старых записей через собственный плагин или в functions.php темы.
Пример функции удаления записей старше 90 дней
function wpblog_delete_old_posts() {
$days = 90; // количество дней для хранения контента
$date_query = array(
array(
'column' => 'post_date',
'before' => date('Y-m-d', strtotime("-" . $days . " days")),
),
);
$old_posts = get_posts(array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => $date_query,
'fields' => 'ids',
'numberposts' => -1
));
foreach ($old_posts as $post_id) {
wp_delete_post($post_id, true); // true для полного удаления из базы
}
}
// Привязываем к событию cron
add_action('wpblog_delete_cron_hook', 'wpblog_delete_old_posts');
// Регистрируем cron задачу при активации плагина или темы
function wpblog_activate_delete_cron() {
if (! wp_next_scheduled('wpblog_delete_cron_hook')) {
wp_schedule_event(time(), 'daily', 'wpblog_delete_cron_hook');
}
}
add_action('wp', 'wpblog_activate_delete_cron');
// Удаляем cron при деактивации
function wpblog_deactivate_delete_cron() {
$timestamp = wp_next_scheduled('wpblog_delete_cron_hook');
if ($timestamp) {
wp_unschedule_event($timestamp, 'wpblog_delete_cron_hook');
}
}
// Вызвать при деактивации плагина или вручную
Этот код создаёт ежедневное событие, которое ищет и удаляет все публикации старше 90 дней. Можно изменить параметр $days и типы записей.
Расширение: удаление по категориям или тегам
Если нужно удалять записи только из определённых категорий, добавим аргумент category__in в get_posts:
$old_posts = get_posts(array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => $date_query,
'category__in' => array(3,5), // ID категорий
'fields' => 'ids',
'numberposts' => -1
));
Аналогично можно фильтровать по тегам с помощью параметра tag__in.
Как избежать случайного удаления важного контента
Автоматическое удаление — мощный инструмент, но требует осторожности. Вот советы, чтобы не потерять важные материалы:
- Перед удалением делайте резервные копии сайта или базы данных
- Выделяйте отдельные категории для автоматического удаления, чтобы не затронуть основной контент
- Используйте функцию логирования удалённых записей, чтобы контролировать процесс
- Настраивайте удаление с задержкой — например, удалять записи старше 180 дней, а не 30
Интеграция с плагинами WPShop для удобства
Если вы используете на сайте плагины от WPShop, например Clearfy Pro, можно дополнительно оптимизировать работу сайта после удаления старого контента. Clearfy Pro помогает очищать базу данных и ускорять загрузку, что особенно актуально при регулярном удалении большого объёма записей.
Также можно использовать WPRemark для управления комментариями на удаляемых записях, чтобы автоматически чистить связанные комментарии и не оставлять «мертвые» отзывы.
Заключение
Автоматическое удаление старого контента в WordPress — эффективный способ поддержания сайта в актуальном состоянии и улучшения производительности. Используйте готовые плагины, если хотите быстро настроить процесс или напишите собственное решение для гибкой настройки. Не забывайте о безопасности и резервных копиях, чтобы избежать потери важных данных.