wpupgrade.ru wordpress WP Upgrade

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

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

Ведение сайта на WordPress со временем приводит к накоплению большого количества устаревших или неактуальных записей, страниц и пользовательских типов записей (custom post types). Ручное удаление такого контента — трудоемкий и небезопасный процесс, который может привести к ошибкам и потере важной информации. Автоматизация удаления старого контента помогает поддерживать базу данных в чистоте, улучшает производительность сайта и облегчает управление контентом.

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

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

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

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

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

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

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

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

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

function wpupgrade_delete_old_posts() {
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'date_query'     => array(
            array(
                'column' => 'post_date',
                'before' => '30 days ago',
            ),
        ),
        '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( 'wpupgrade_delete_old_posts_hook', 'wpupgrade_delete_old_posts' );

В этом примере функция wpupgrade_schedule_old_posts_deletion проверяет, запланировано ли уже событие удаления, и если нет — создает его. Функция wpupgrade_delete_old_posts ищет все опубликованные посты старше 30 дней и удаляет их без возможности восстановления.

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

Если на вашем сайте используются кастомные типы записей, например «акции» или «мероприятия», вы можете расширить запрос в get_posts, добавив нужные типы:

'post_type' => array( 'post', 'event', 'sale' ),

Также можно удалять черновики или записи в корзине, изменив параметр post_status. Будьте осторожны — удаление опубликованного контента без резервного копирования может привести к потере данных.

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

Плагин "Auto Post Delete"

Среди популярных готовых решений — плагин Auto Post Delete, который позволяет настроить удаление записей по возрасту через интерфейс администратора.

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

Плагин Clearfy Pro для расширенного управления контентом

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

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

Резервное копирование и тестирование

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

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

Логи и уведомления

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

function wpupgrade_delete_old_posts() {
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'date_query'     => array(
            array(
                'column' => 'post_date',
                'before' => '30 days ago',
            ),
        ),
        'fields'         => 'ids',
        'posts_per_page' => -1,
    );

    $old_posts = get_posts( $args );
    $deleted_posts = array();

    if ( ! empty( $old_posts ) ) {
        foreach ( $old_posts as $post_id ) {
            if ( wp_delete_post( $post_id, true ) ) {
                $deleted_posts[] = $post_id;
            }
        }
    }

    if ( ! empty( $deleted_posts ) ) {
        wp_mail( get_option('admin_email'), 'Удаление старых постов', 'Удалены посты с ID: ' . implode(', ', $deleted_posts) );
    }
}

Это даст вам дополнительную уверенность и контроль над процессом.

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

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее