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

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

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

Удаление устаревших записей помогает:

  • Избежать снижения позиций в поисковых системах из-за «мусорных» страниц;
  • Снизить нагрузку на базу данных, что ускоряет работу сайта;
  • Упростить навигацию для пользователей, оставив только актуальную информацию;
  • Поддерживать высокий уровень безопасности, так как старые страницы могут содержать уязвимости.

Но вручную удалять записи неудобно и рискованно, особенно если их много. Поэтому автоматизация — лучший вариант.

Реализация автоматического удаления старого контента через код

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

Пример функции для удаления записей старше 30 дней

function wpbloger_delete_old_posts() {
    $days = 30; // количество дней, после которого записи удаляются
    $date_query = array(
        'column' => 'post_date',
        'before' => date('Y-m-d', strtotime("-{$days} 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);

    foreach ($old_posts as $post_id) {
        wp_delete_post($post_id, true); // true - удаление без корзины
    }
}

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

Автоматизация задачи с помощью WP-Cron

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

function wpbloger_schedule_old_posts_deletion() {
    if (!wp_next_scheduled('wpbloger_weekly_old_posts_deletion')) {
        wp_schedule_event(time(), 'weekly', 'wpbloger_weekly_old_posts_deletion');
    }
}
add_action('wp', 'wpbloger_schedule_old_posts_deletion');

add_action('wpbloger_weekly_old_posts_deletion', 'wpbloger_delete_old_posts');

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

Удаление старого контента с учетом типов записей и пользовательских условий

В реальных проектах часто нужно удалять не только стандартные записи, но и кастомные типы, например, отзывы, товары или кастомные посты.

Для этого измените параметр post_type в запросе:

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

Также можно добавить фильтры по таксономиям или метаполям, например, удалять только неактивные товары.

Пример с метаполем "активность"

$args['meta_query'] = array(
    array(
        'key' => 'active',
        'value' => '0',
        'compare' => '=',
    ),
);

Такой запрос удалит только записи с метаполем active=0 и старше 30 дней.

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

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

  • Auto Post Scheduler — плагин, который может автоматически удалять и переопубликовывать записи по расписанию;
  • WP Bulk Delete — мощный инструмент для массового удаления постов по различным критериям, включая дату, категории, метаполя;
  • Clearfy Pro (ссылка: https://wpshop.ru/clearfy-pro) — не только оптимизатор, но и содержит функции для очистки базы от мусорных данных.

Все эти решения позволяют настроить удаление контента без написания кода, что удобно для новичков.

Безопасность и резервное копирование перед удалением

Любое автоматическое удаление несет риск потери важных данных. Обязательно настройте регулярное резервное копирование сайта. Для этого подойдут плагины:

  • UpdraftPlus
  • WPBackItUp
  • All-in-One WP Migration

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

Как отменить или просмотреть удаляемый контент

Рекомендуется сначала не удалять записи сразу, а переводить их в статус trash — корзина WordPress. Тогда можно будет восстановить удаленный контент, если что-то пошло не так.

wp_trash_post($post_id);

Измените в функции wpbloger_delete_old_posts вызов wp_delete_post на wp_trash_post для безопасного удаления.

Итоги и рекомендации

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

Не забывайте про резервное копирование и тестируйте скрипты на тестовом сайте до внедрения в рабочий проект.

Как добавить автоматические ответы в комментарии WordPress
09.01.2026
Автоматическое удаление спама в комментариях WordPress
15.12.2025
Кастомизация пунктов меню в админке WordPress: настройка и примеры кода
30.12.2025
Удалить кэш в WordPress: практические способы и код для очистки
10.11.2025
Оптимизация загрузки шрифтов в WordPress: практические решения и примеры кода
05.12.2025