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

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

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

Удаление старого контента позволяет:

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

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

Автоматизация удаления по дате: основные подходы

Существует несколько способов автоматизировать удаление:

  1. Использование WP Cron для периодической проверки и удаления постов старше определённого срока.
  2. Применение готовых плагинов с функцией очистки старого контента.
  3. Комбинация плагинов и собственного кода для гибкой настройки.

Рассмотрим каждый вариант подробнее.

Использование WP Cron и собственного кода

WP Cron позволяет запускать задачи по расписанию. Создадим функцию wpcource_delete_old_posts(), которая будет удалять посты старше 180 дней.

function wpcource_delete_old_posts() {
    global $wpdb;
    $days = 180; // количество дней
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $old_posts = get_posts(array(
        'date_query' => array(
            array(
                'before' => $date,
                'inclusive' => true,
            ),
        ),
        'post_type' => 'post',
        'post_status' => 'publish',
        'numberposts' => -1,
        'fields' => 'ids',
    ));

    foreach ($old_posts as $post_id) {
        wp_trash_post($post_id); // перемещаем в корзину
    }
}

// Регистрируем событие, если не зарегистрировано
if (!wp_next_scheduled('wpcource_daily_old_post_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpcource_daily_old_post_cleanup');
}

// Хук для запуска функции
add_action('wpcource_daily_old_post_cleanup', 'wpcource_delete_old_posts');

Этот код добавьте в functions.php вашей темы или в плагин. Он будет ежедневно перемещать в корзину все посты старше 180 дней. Если хотите полностью удалять, замените wp_trash_post на wp_delete_post($post_id, true).

Настройка удаления для других типов записей и условий

Вы можете изменить параметр post_type на page или на кастомные типы записей. Также можно добавить дополнительные условия, например, по категориям или меткам:

$old_posts = get_posts(array(
    'date_query' => array(...),
    'post_type' => 'custom_type',
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field' => 'slug',
            'terms' => 'news',
        ),
    ),
    'post_status' => 'publish',
    'numberposts' => -1,
    'fields' => 'ids',
));

Плагины для удаления старого контента

Если не хочется писать код, можно использовать плагины. Вот несколько вариантов с примечаниями:

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

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

Интеграция с плагином Clearfy Pro для оптимизации

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

Практические советы и рекомендации

Перед автоматическим удалением важно:

  • Создать резервную копию базы данных.
  • Тестировать код или плагин на тестовом сайте.
  • Настроить уведомления или логи для контроля удалений.
  • Подумать, что делать с удалённым контентом: просто перемещать в корзину или удалять навсегда.

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

Выводы

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

WooCommerce: как автоматически удалять отменённые заказы и товары из них
11.05.2026
Как создать многоуровневую навигацию в WordPress с помощью кода
23.01.2026
WooCommerce: как автоматически удалять отменённые заказы
21.05.2026
Как избежать конфликтов между плагинами в WordPress: практические советы и примеры кода
09.03.2026
Как удалить разные виды кеша в WordPress
15.02.2026

Обучение разработке на WordPress, как создавать темы, плагины. Подробнее об обучении.