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

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

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

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

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

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

Плагин Auto Post Delete

Auto Post Delete — простой и эффективный плагин, который позволяет настроить автоматическое удаление записей и страниц по возрасту. Он поддерживает фильтрацию по типу записи и категориям, что даёт гибкость в управлении контентом.

Для установки:

  • Перейдите в админку WordPress → Плагины → Добавить новый.
  • Введите в поиске «Auto Post Delete».
  • Установите и активируйте плагин.

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

Плагин WP Bulk Delete

WP Bulk Delete позволяет удалять посты, страницы и другие типы записей по различным критериям, включая дату публикации, категории, статусы и метки. Он подходит для более сложных сценариев, когда нужно точечно управлять удалением.

Преимущества WP Bulk Delete:

  • Гибкая фильтрация контента.
  • Планировщик заданий для автоматизации.
  • Удаление пользователей и комментариев по определённым условиям.

Настроить автоматическое удаление можно через интерфейс плагина или использовать его API для интеграции в кастомные решения.

Автоматизация удаления старого контента с помощью кода

Если вы предпочитаете не использовать плагины или хотите интегрировать удаление в собственные процессы, можно воспользоваться WP Cron и написать функцию для удаления записей старше определённой даты.

Пример кода для автоматического удаления постов старше 180 дней

function wpscan_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'column' => 'post_date',
                'before' => '180 days ago',
            ),
        ),
        'post_type' => 'post',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1,
    );

    $old_posts = get_posts($args);

    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            wp_delete_post($post_id, true); // true - без помещения в корзину
        }
    }
}

function wpscan_schedule_old_posts_deletion() {
    if (!wp_next_scheduled('wpscan_delete_old_posts_hook')) {
        wp_schedule_event(time(), 'daily', 'wpscan_delete_old_posts_hook');
    }
}

add_action('wpscan_delete_old_posts_hook', 'wpscan_delete_old_posts');
add_action('wp', 'wpscan_schedule_old_posts_deletion');

В этом коде:

  • Функция wpscan_delete_old_posts ищет все опубликованные записи старше 180 дней и удаляет их без помещения в корзину.
  • Функция wpscan_schedule_old_posts_deletion регистрирует ежедневное событие для запуска удаления.
  • Хук wpscan_delete_old_posts_hook связывает событие и функцию удаления.

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

Расширение примера: исключение определённых категорий

Если вы хотите исключить из удаления записи из категории «Новости», добавьте параметр category__not_in:

$args = array(
    'date_query' => array(
        array(
            'column' => 'post_date',
            'before' => '180 days ago',
        ),
    ),
    'post_type' => 'post',
    'post_status' => 'publish',
    'category__not_in' => array(5), // ID категории «Новости»
    'fields' => 'ids',
    'posts_per_page' => -1,
);

Как контролировать процесс удаления и избегать ошибок

Автоматическое удаление контента — достаточно серьёзная операция, поэтому важно предусмотреть контроль и резервное копирование.

Рекомендации:

  • Перед удалением создавайте резервные копии базы данных.
  • Добавьте логирование удалённых записей для возможного восстановления.
  • Тестируйте код или плагин на тестовом сайте перед применением на рабочем.

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

function wpscan_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'column' => 'post_date',
                'before' => '180 days ago',
            ),
        ),
        'post_type' => 'post',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1,
    );

    $old_posts = get_posts($args);

    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            $title = get_the_title($post_id);
            if (wp_delete_post($post_id, true)) {
                error_log('Удалён пост ID: ' . $post_id . ', Заголовок: ' . $title);
            } else {
                error_log('Ошибка при удалении поста ID: ' . $post_id);
            }
        }
    }
}

Логи можно просматривать через файлы сервера или плагины для мониторинга ошибок.

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

Clearfy Pro для управления контентом

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

Использование WP-CLI для массового удаления

Если у вас есть доступ к серверу и вы предпочитаете работать через командную строку, WP-CLI предлагает мощные команды для удаления постов. Например, команда:

wp post delete $(wp post list --post_type=post --format=ids --date_query_column=post_date --before='180 days ago')

удалит все посты старше 180 дней. Это удобно для быстрой очистки без создания кастомного кода.

Выводы

Автоматизация удаления старого контента в WordPress — важный элемент поддержки сайта в актуальном состоянии и улучшения его производительности. Используйте готовые плагины для быстрого старта или внедряйте собственные решения для максимальной гибкости. Обязательно тестируйте все изменения и делайте резервные копии перед удалением данных. Такой подход позволит вам эффективно управлять контентом и обеспечивать лучший опыт для посетителей.

Подробнее о полезных плагинах и инструментах для оптимизации WordPress смотрите на WPSHOP.RU.

Как отключить плагины на определённых страницах WordPress
06.02.2026
Удаление метаданных из фото в WordPress: как защитить сайт и ускорить загрузку
04.01.2026
Как решить проблему неудачного удаления отказанных заказов WooCommerce с помощью кода
21.04.2026
Как защитить WordPress от zero-day уязвимостей и что делать после обнаружения
28.01.2026
Как автоматизировать удаление неиспользуемых плагинов WordPress
27.02.2026