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

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

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

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

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

Как реализовать автоматическое удаление контента с помощью WP-Cron

WP-Cron — встроенная система планировщика задач в WordPress, которая позволяет запускать события с определённой периодичностью. Мы создадим задачу, которая будет раз в сутки удалять записи старше определённого времени.

Шаг 1. Создаём функцию для удаления старых записей

Добавьте следующий код в файл functions.php вашей темы или в собственный плагин:

function wp_pro_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'column' => 'post_date',
                'before' => '90 days ago', // Удаляем посты старше 90 дней
            ),
        ),
        '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 — удалять без перехода в корзину
        }
    }
}

Эта функция выберет все опубликованные записи старше 90 дней и удалит их без возможности восстановления из корзины.

Шаг 2. Регистрируем событие WP-Cron

Добавьте следующий код, чтобы создать задачу, вызывающую функцию ежедневно:

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

add_action('wp_pro_delete_old_posts_hook', 'wp_pro_delete_old_posts');

Теперь WordPress будет запускать функцию удаления старого контента один раз в сутки.

Шаг 3. Удаление задачи при деактивации плагина или темы

Чтобы не оставлять «мусор» в WP-Cron, добавьте очистку при деактивации:

function wp_pro_clear_old_posts_deletion_schedule() {
    $timestamp = wp_next_scheduled('wp_pro_delete_old_posts_hook');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wp_pro_delete_old_posts_hook');
    }
}
register_deactivation_hook(__FILE__, 'wp_pro_clear_old_posts_deletion_schedule');

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

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

Плагин WP Auto Delete Posts

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

  • Настройка возраста контента для удаления.
  • Выбор типов записей (посты, страницы, кастомные типы).
  • Фильтрация по категориям и тегам.
  • Мягкое удаление (в корзину) или полное удаление.

Плагин можно скачать с официального сайта WPShop.

Плагин Clearfy для оптимизации и очистки

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

Подробно о Clearfy Pro и его возможностях читайте на странице плагина.

Дополнительные советы по автоматизации работы с контентом

Используйте кастомные типы записей

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

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

Для контроля над процессом полезно добавить логирование. Например, сохранять ID удалённых записей в файл или отправлять уведомления на email.

function wp_pro_delete_old_posts_with_log() {
    $args = array(
        'date_query' => array(
            array('column' => 'post_date', 'before' => '90 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);
            error_log("Удалён пост ID: $post_id");
        }
    }
}

Используйте WP-CLI для массовых операций

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

wp post delete $(wp post list --post_type=post --format=ids --date_query='before=90 days ago')

Это особенно удобно для разовых чисток.

Заключение

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

Как автоматизировать создание отзывов в WordPress с помощью плагинов и кода
23.01.2026
Как создать собственный шорткод в WordPress
09.11.2025
Оптимизация базы данных WordPress: лучшие практики и решения
24.11.2025
Как отключить Gutenberg и вернуть классический редактор в WordPress
15.01.2026
Как добавить автоподсказку в поиск WordPress
21.03.2026