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

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

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

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

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

Создание функции для удаления записей по дате

Для автоматизации процесса можно написать функцию, которая будет удалять записи старше заданного срока. Ниже пример функции wp1_delete_old_posts(), которая удалит записи типа post старше 180 дней.

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

    $old_posts = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM $wpdb->posts WHERE post_type = %s AND post_status = 'publish' AND post_date < %s",
        'post', $date
    ));

    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            wp_delete_post($post_id, true); // true - удаление без возможности восстановления
        }
    }
}

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

Автоматизация через WP-Cron

Чтобы функция запускалась регулярно, добавим событие в планировщик WordPress:

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

add_action('wp1_daily_delete_old_posts', 'wp1_delete_old_posts');

Теперь функция wp1_delete_old_posts будет вызываться ежедневно.

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

Если вы предпочитаете готовые решения, рекомендуем обратить внимание на плагины:

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

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

Пример настройки WP Bulk Delete для удаления записей старше 6 месяцев

В настройках плагина выберите тип записи post, укажите условие по дате (старше 180 дней), выберите статус publish и выполните удаление. Можно настроить и автоматический запуск через WP-Cron.

Как избежать ошибок при удалении контента

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

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

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

Расширение функционала: удаление по пользовательским типам записей

Если на сайте используются кастомные типы записей, например, product или event, можно адаптировать функцию удаления:

function wp1_delete_old_custom_posts($post_type = 'post', $days = 180) {
    global $wpdb;
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $old_posts = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM $wpdb->posts WHERE post_type = %s AND post_status = 'publish' AND post_date < %s",
        $post_type, $date
    ));

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

Вызовите эту функцию с нужным типом записи, например, wp1_delete_old_custom_posts('event', 365); для удаления событий старше года.

Заключение

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

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

Как создать автоматический бэкап WordPress: практическое руководство
28.11.2025
Как создать динамические формы в WordPress с помощью REST API
05.04.2026
Как удалить неиспользуемые темы в WordPress
14.04.2026
Как удалить все черновики (draft) из базы данных WordPress
05.12.2025
Оптимизация базы данных WordPress: лучшие практики и примеры кода
14.11.2025