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

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

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

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

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

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

Для автоматического удаления записей или страниц старше заданного срока можно использовать планировщик задач WordPress — WP-Cron. Ниже приведён пример функции, которая удаляет все записи пост_тайпа post, опубликованные более 180 дней назад.

function wptool_auto_delete_old_posts() {
    $days_old = 180; // Количество дней, после которых записи удаляются
    $date_threshold = date('Y-m-d H:i:s', strtotime("-{$days_old} days"));

    // Получаем ID записей, подходящих под условие
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'date_query'     => array(
            array(
                'column' => 'post_date',
                'before' => $date_threshold,
            ),
        ),
        '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('wptool_daily_cleanup', 'wptool_auto_delete_old_posts');

В данном примере функция wptool_auto_delete_old_posts ищет опубликованные записи старше 180 дней и полностью удаляет их из базы данных.

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

Чтобы функция запускалась автоматически, необходимо зарегистрировать событие в WP-Cron. Добавим код для активации ежедневного запуска при инициализации WordPress:

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

Этот код проверяет, запланировано ли уже событие wptool_daily_cleanup, и если нет — планирует его на ежедневный запуск.

Как удалять разные типы контента и учитывать особенности

В примере выше показано удаление записей типа post. Если на вашем сайте есть другие типы контента, например, страницы (page) или кастомные типы, их тоже можно включить в выборку.

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

$args['post_type'] = array('post', 'page', 'custom_type');

Будьте осторожны с удалением страниц — это может повлиять на структуру сайта. Рекомендуется сначала протестировать функцию на тестовом сайте.

Также обратите внимание на параметр wp_delete_post вторым аргументом — true означает полное удаление без перемещения в корзину. Если вы хотите иметь возможность восстанавливать записи, используйте false.

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

Удаление данных — это необратимый процесс. Чтобы избежать ошибок и потери важных данных, полезно добавить несколько защитных механизмов:

  • Добавьте проверку на количество удаляемых записей, чтобы не удалить слишком много за один раз.
  • Ведите логирование удалённых ID в отдельный файл или таблицу базы данных.
  • Перед удалением создавайте резервные копии сайта — для этого можно использовать плагин Clearfy Pro, который умеет автоматизировать резервное копирование и оптимизацию.

Пример добавления логирования в файл:

function wptool_auto_delete_old_posts() {
    $days_old = 180;
    $date_threshold = date('Y-m-d H:i:s', strtotime("-{$days_old} days"));

    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'date_query'     => array(
            array(
                'column' => 'post_date',
                'before' => $date_threshold,
            ),
        ),
        'fields'         => 'ids',
        'posts_per_page' => -1,
    );

    $old_posts = get_posts($args);

    if (!empty($old_posts)) {
        $log_file = WP_CONTENT_DIR . '/wptool_deleted_posts.log';
        foreach ($old_posts as $post_id) {
            wp_delete_post($post_id, true);
            file_put_contents($log_file, date('Y-m-d H:i:s') . " - Deleted post ID: {$post_id}\n", FILE_APPEND);
        }
    }
}

Лучшие плагины для автоматизации очистки контента

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

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

Для интеграции с вашим сайтом на WordPress можно использовать плагины от WPSHOP, например, Clearfy Pro для оптимизации и безопасности сайта.

Выводы и рекомендации по автоматическому удалению старого контента

Автоматизация удаления старого контента — важный шаг к поддержанию чистоты и производительности сайта. Рекомендуется:

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

Соблюдение этих правил поможет безопасно и эффективно управлять контентом вашего WordPress-сайта.

Как создать автоматический лог по ошибкам в WordPress с применением кода
03.04.2026
Как автоматически удалять старые заказы WooCommerce по дате
25.05.2026
Как удалить или изменить авторские права в метаданных WordPress
08.02.2026
Как создать динамическую страницу в WordPress с помощью shortcode
19.12.2025
Автоматическое изменение стоимости товара WooCommerce при изменении количества
07.06.2026