Как автоматически удалять старый контент в WordPress по дате публикации

Введение в проблему удаления старого контента

При активной работе сайта на 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 — эффективный способ поддержания сайта в актуальном состоянии и улучшения производительности. Используйте готовые плагины, если хотите быстро настроить процесс или напишите собственное решение для гибкой настройки. Не забывайте о безопасности и резервных копиях, чтобы избежать потери важных данных.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Запрет доступа к административной панели WordPress по IP: практическое руководство
07.11.2025
Как использовать AJAX в WordPress для обновления контента без перезагрузки
03.01.2026
Как создать адаптивный блок с изображением в WordPress: практическое руководство
23.12.2025
Как удалить удалённые комментарии из базы данных WordPress
05.12.2025
WooCommerce: автоматическое удаление неактивных заказов с примерами кода
02.06.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее