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

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

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

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

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

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

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

Регистрация события в WP-Cron

Для начала добавим событие в расписание, если оно ещё не зарегистрировано. В functions.php вашей темы или в отдельном плагине добавьте следующий код:

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

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

Реализация функции удаления старых записей

Далее добавим обработчик события, который будет искать и удалять устаревшие записи. Настроим удаление всех записей старше 180 дней (параметр можно изменить):

function WPCommunity_cron_delete_old_posts() {
    $days_old = 180; // возраст контента в днях
    $date_query = array(
        'before' => date( 'Y-m-d', strtotime( "-{$days_old} days" ) ),
        'inclusive' => true,
    );

    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'date_query'     => array( $date_query ),
        '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( 'WPCommunity_delete_old_posts_hook', 'WPCommunity_cron_delete_old_posts' );

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

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

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

$args['category__not_in'] = array( 10, 15 ); // ID категорий, которые не удалять

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

Еще один совет — вместо полного удаления использовать перевод записей в черновики или в корзину. Для этого измените вызов wp_delete_post:

wp_trash_post( $post_id ); // переместить в корзину вместо безвозвратного удаления

Это позволит восстановить записи при необходимости.

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

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

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

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

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

Как использовать фильтры WooCommerce для автоматического изменения стоимости товаров
31.05.2026
Как автоматизировать обновление пользовательских ролей в WordPress
22.12.2025
Как удалить неиспользуемые таблицы в базе данных WordPress для оптимизации
20.11.2025
Как создать автоматические отчёты в WordPress с помощью WP-Cron и REST API
16.01.2026
Как избежать проблем с отправкой писем с WordPress через SMTP
06.06.2026

Задать вопрос о вордпресс, получить ответ - это все можно сделать в нашем сообществе WP. Сайт в данный момент в разработке, изучите ссылки ниже: