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

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

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

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

Какие типы контента можно удалять автоматически

В WordPress можно настроить удаление следующих типов контента:

  • Посты (записи) по дате создания или по статусу.
  • Страницы, которые устарели или не используются.
  • Черновики и авто-сохранения, которые не нужны.
  • Отзывы, комментарии, если они старые или неактивные.
  • Кастомные типы записей (Custom Post Types) по заданным параметрам.

Чаще всего удаляют посты, которые не обновлялись или не имели активности в течение определенного времени — например, старше 1 года.

Автоматическое удаление через код: пример функции для WordPress

Рассмотрим пример простой функции, которая удаляет все записи типа post, созданные более года назад. Добавьте этот код в файл functions.php вашей темы или в отдельный плагин:

function wpsystem_delete_old_posts() {
    $args = [
        'date_query' => [
            [
                'column' => 'post_date',
                'before' => '1 year ago',
            ],
        ],
        'post_type' => 'post',
        'post_status' => 'publish',
        '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 — удалить без отправки в корзину
        }
    }
}
// Запускаем функцию раз в сутки с помощью WP-Cron
add_action('wpsystem_daily_cleanup', 'wpsystem_delete_old_posts');

// Регистрируем событие при активации темы или плагина
function wpsystem_schedule_cleanup() {
    if (!wp_next_scheduled('wpsystem_daily_cleanup')) {
        wp_schedule_event(time(), 'daily', 'wpsystem_daily_cleanup');
    }
}
add_action('wp', 'wpsystem_schedule_cleanup');

Этот код создает задачу, которая ежедневно будет удалять все опубликованные посты старше одного года. Обратите внимание, что удаление происходит без помещения в корзину (параметр true в wp_delete_post).

Как расширить функционал: удаление по категориям, тегам и типам контента

Если нужно более точное удаление, например, только постов из определенной категории или кастомного типа записи, измените параметры запроса $args. Пример удаления постов из категории с ID 15 старше 6 месяцев:

function wpsystem_delete_old_category_posts() {
    $args = [
        'date_query' => [
            [
                'column' => 'post_date',
                'before' => '6 months ago',
            ],
        ],
        'category__in' => [15],
        'post_type' => 'post',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1,
    ];
    $old_posts = get_posts($args);

    foreach ($old_posts as $post_id) {
        wp_delete_post($post_id, true);
    }
}

Для кастомных типов контента достаточно заменить параметр 'post_type' => 'custom_type'. Также можно комбинировать условия для более гибкой фильтрации.

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

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

  • Auto Post Scheduler — позволяет планировать удаление и обновление постов по расписанию.
  • WP Bulk Delete — мощный инструмент для массового удаления контента по различным условиям, включая дату публикации, категорию, статус и т.д.
  • Clearfy Pro — плагин для оптимизации сайта, который включает функции очистки базы данных и удаления мусора, в том числе старого контента.

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

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

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

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

function wpsystem_log_deleted_post($post_id) {
    $log_file = WP_CONTENT_DIR . '/wpsystem_deleted_posts.log';
    $log_entry = date('Y-m-d H:i:s') . " - Deleted post ID: $post_id\n";
    file_put_contents($log_file, $log_entry, FILE_APPEND);
}

function wpsystem_delete_old_posts_with_log() {
    $args = array(
        'date_query' => array(
            array(
                'column' => 'post_date',
                'before' => '1 year ago',
            ),
        ),
        'post_type' => 'post',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1,
    );
    $old_posts = get_posts($args);

    foreach ($old_posts as $post_id) {
        wp_delete_post($post_id, true);
        wpsystem_log_deleted_post($post_id);
    }
}
add_action('wpsystem_daily_cleanup', 'wpsystem_delete_old_posts_with_log');

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

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

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

Если не хотите писать код, обратите внимание на проверенные плагины, например, WP Bulk Delete или Clearfy Pro, которые делают процесс удобным и безопасным.

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

Автоматическое создание резервных копий в WordPress с помощью кода и плагинов
19.02.2026
Как добавить автоматический режим работы для плагина WordPress
25.01.2026
Добавление дополнительного поля в форму регистрации WordPress
22.03.2026
WooCommerce: как программно удалять товар из корзины по условию
24.05.2026
WooCommerce: как изменить название и URL страницы корзины
26.04.2026