Автоматическое удаление старого контента в WordPress по дате и категории

В процессе ведения сайта на WordPress часто возникает необходимость автоматически удалять устаревший контент. Это может быть связано с поддержанием актуальности информации, оптимизацией базы данных и улучшением производительности сайта. В этой статье мы подробно рассмотрим, как настроить автоматическое удаление старых записей в WordPress с учетом даты публикации и категории, а также приведем примеры кода и полезные рекомендации.

Почему важно удалять старый контент в WordPress

Удаление старого контента помогает поддерживать сайт в актуальном состоянии и уменьшает нагрузку на базу данных. Особенно это актуально для новостных сайтов, блогов с часто обновляемым контентом, а также для сайтов с ограничениями по объему хранилища.

Кроме того, удаление устаревших записей положительно влияет на SEO, так как поисковые системы ценят свежий и релевантный контент. Удаляя старые и неактуальные посты, вы снижаете риск появления дублей и устаревших сведений в выдаче.

Важно при этом корректно настроить процесс, чтобы не удалять важный контент и не навредить структуре сайта.

Как реализовать автоматическое удаление записей по дате и категории

Основная идея — создать функцию, которая будет запускаться по расписанию (cron), искать записи старше определенного срока и удалять их. Для гибкости можно добавить фильтрацию по категориям.

Для примера рассмотрим удаление записей старше 180 дней из категории с ID 5.

Регистрация cron задачи

Добавим в functions.php или в собственный плагин следующий код для регистрации события, которое будет срабатывать ежедневно:

function wpstart_register_delete_old_posts_event() {
    if (!wp_next_scheduled('wpstart_delete_old_posts_hook')) {
        wp_schedule_event(time(), 'daily', 'wpstart_delete_old_posts_hook');
    }
}
add_action('wp', 'wpstart_register_delete_old_posts_event');

Функция удаления старых записей

Далее создадим обработчик события, который найдет и удалит нужные записи:

function wpstart_delete_old_posts() {
    $days = 180; // количество дней
    $category_id = 5; // ID категории для удаления

    $date_query = array(
        array(
            'before' => date('Y-m-d', strtotime("-{$days} days")),
            'inclusive' => true,
        ),
    );

    $args = array(
        'post_type' => 'post',
        'posts_per_page' => -1,
        'date_query' => $date_query,
        'category' => $category_id,
        'fields' => 'ids',
        'post_status' => 'any',
    );

    $old_posts = get_posts($args);

    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            wp_delete_post($post_id, true); // true для полного удаления без отправки в корзину
        }
    }
}
add_action('wpstart_delete_old_posts_hook', 'wpstart_delete_old_posts');

Объяснение кода

  • wp_schedule_event ставит задачу в расписание — в нашем случае ежедневную.
  • get_posts с параметрами date_query и category находит записи, опубликованные более 180 дней назад в нужной категории.
  • wp_delete_post удаляет найденные записи без возможности восстановления (без перехода в корзину).

Дополнительные настройки и рекомендации

Удаление по нескольким категориям

Если нужно удалять записи из нескольких категорий, замените параметр 'category' на 'category__in' => array(5,7,9), где массив содержит ID нужных категорий.

Безопасность и резервное копирование

Перед внедрением автоматического удаления обязательно настройте регулярное резервное копирование базы данных и файлов сайта. Это позволит восстановить данные, если удаление пройдет некорректно.

Логирование удалений

Для контроля процесса можно добавить запись в лог при каждом удалении:

function wpstart_delete_old_posts() {
    // ...
    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            wp_delete_post($post_id, true);
            error_log("WPStart: Удалена запись ID {$post_id} по истечении {$days} дней");
        }
    }
}

Логи можно просматривать в файле wp-content/debug.log при включенном режиме отладки WordPress.

Использование плагинов для управления автозадачами

Если вы не хотите писать код, существуют плагины, которые помогают автоматизировать удаление старого контента:

  • Auto Post Delete — позволяет настроить удаление записей по времени и категориям через удобный интерфейс.
  • WP Clear Posts — еще один инструмент для массового удаления устаревшего контента.

Для расширенной автоматизации и оптимизации сайта рекомендуем обратить внимание на Clearfy Pro — мощный плагин для оптимизации и очистки базы данных WordPress.

Заключение по теме удаления старого контента

Автоматическое удаление старого контента — важный аспект поддержания сайта в актуальном и оптимизированном состоянии. С помощью небольшого кода и планировщика задач можно настроить гибкое удаление записей по дате и категории без участия администратора. Такой подход помогает экономить ресурсы, улучшать SEO и повышать качество сайта.

Если вы хотите более глубоко автоматизировать процессы управления контентом, рекомендуем изучить возможности плагинов, в частности Clearfy Pro, который дополнительно поможет очистить базу от мусора и старых данных.

WooCommerce: автоматическое обновление стоимости товара при акции
08.05.2026
WooCommerce: автоматическое изменение стоимости товара при определённых условиях
29.04.2026
Автоматическое удаление неактивных пользователей WordPress
08.02.2026
Как создать динамический фильтр товаров в WordPress
04.04.2026
Как сделать автоматический импорт заданий из Яндекс Толока в WordPress
04.02.2026