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

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

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

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

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

Использование WP-Cron для регулярного удаления записей

Что такое WP-Cron и как он работает

WP-Cron — это встроенный планировщик задач в WordPress, который позволяет запускать пользовательские функции по расписанию. Несмотря на то, что он не является настоящим системным cron, он достаточно удобен для выполнения периодических действий внутри WordPress.

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

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

function wpco_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'before' => '1 year ago',
                'inclusive' => true,
            ),
        ),
        '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 для полного удаления без корзины
        }
    }
}

add_action('wpco_weekly_cleanup', 'wpco_delete_old_posts');

// Регистрируем еженедельное событие, если оно еще не зарегистрировано
if (!wp_next_scheduled('wpco_weekly_cleanup')) {
    wp_schedule_event(time(), 'weekly', 'wpco_weekly_cleanup');
}

Этот код добавляет еженедельное задание, которое удаляет все опубликованные записи старше одного года. Функция wp_delete_post с параметром true удаляет запись без помещения в корзину.

Плагины для автоматизации удаления контента

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

Плагин WP Bulk Delete

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

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

  • Настройка автоматического удаления с помощью WP-Cron через интерфейс
  • Фильтрация по дате, статусу, таксономиям
  • Удаление черновиков, записей в корзине, опубликованных

Для настройки автоматического удаления нужно в админ-панели плагина выбрать нужные параметры и активировать расписание.

Плагин Advanced Database Cleaner

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

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

Если на вашем сайте есть пользовательские типы записей (Custom Post Types), например, портфолио, отзывы, товары, вы можете адаптировать код для их очистки.

Пример удаления кастомных записей типа «review» старше 6 месяцев:

function wpco_delete_old_reviews() {
    $args = array(
        'date_query' => array(
            array(
                'before' => '6 months ago',
                'inclusive' => true,
            ),
        ),
        'post_type' => 'review',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1,
    );

    $old_reviews = get_posts($args);

    if (!empty($old_reviews)) {
        foreach ($old_reviews as $post_id) {
            wp_delete_post($post_id, true);
        }
    }
}

add_action('wpco_monthly_review_cleanup', 'wpco_delete_old_reviews');

if (!wp_next_scheduled('wpco_monthly_review_cleanup')) {
    wp_schedule_event(time(), 'monthly', 'wpco_monthly_review_cleanup');
}

Если вы хотите удалять записи по дополнительным метаданным, например, по значению кастомного поля, можно добавить meta_query в параметры запроса get_posts.

Безопасность и резервные копии при удалении контента

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

Для автоматического создания бэкапов можно использовать плагин Backup WP от WPSHOP, который позволяет настроить регулярное создание копий сайта и базы данных.

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

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

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

Если на вашем сайте сложная структура с пользовательскими типами записей и метаданными — рекомендуется комбинировать оба подхода для максимального контроля.

Как установить ограничения на число записей в контейнере WordPress
05.02.2026
Как сделать защиту от спама в комментариях WordPress
14.11.2025
Как сделать динамические шорткоды в WordPress: подробное руководство
02.11.2025
Как сделать автоматический импорт данных из Google Sheets в WordPress
24.02.2026
Как отладить и исправить ошибки в плагинах WordPress
18.12.2025