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

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

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

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

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

Решением является регулярное удаление или архивирование устаревших материалов. Автоматизация этого процесса позволит сэкономить время и избежать ошибок.

Как реализовать автоматическое удаление старых записей с помощью кода

Самый гибкий способ — добавить в functions.php вашей темы или в отдельный плагин функцию, которая будет запускаться по расписанию и удалять записи старше заданного времени.

Создаем функцию удаления старых записей

Пример функции, которая удаляет все записи типа post старше 90 дней:

function wpplugins_delete_old_posts() {
    global $wpdb;
    $days = 90; // количество дней
    $date_threshold = 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 = 'post' AND post_status = 'publish' AND post_date < %s",
        $date_threshold
    ));

    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            wp_delete_post($post_id, true); // true — удалять без корзины
        }
    }
}

Настраиваем Cron для автоматического запуска

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

if (!wp_next_scheduled('wpplugins_daily_old_posts_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpplugins_daily_old_posts_cleanup');
}

add_action('wpplugins_daily_old_posts_cleanup', 'wpplugins_delete_old_posts');

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

Удаление старого контента по типам и таксономиям

Иногда нужно удалять записи не только по дате, но и по определенным категориям или типам. Например, удалять старые записи типа product или записи из категории «Новости».

Пример кода с фильтром по категории

function wpplugins_delete_old_news_posts() {
    $days = 60; // удалять записи старше 60 дней
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $args = [
        'post_type' => 'post',
        'posts_per_page' => -1,
        'date_query' => [
            [
                'column' => 'post_date',
                'before' => $date_threshold,
            ],
        ],
        'category_name' => 'news',
        'post_status' => 'publish',
        'fields' => 'ids',
    ];

    $old_posts = get_posts($args);

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

Такой подход позволяет гибко настраивать критерии удаления.

Плагины для автоматического удаления старого контента

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

1. WP Auto Delete Posts

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

Подробнее о WP Auto Delete Posts на WPSHOP

2. Post Expirator (или его аналоги)

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

3. Clearfy Pro

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

Узнать больше про Clearfy Pro

Рекомендации по безопасному удалению контента

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

  • Обязательно делайте резервные копии базы данных, чтобы избежать потери важных данных.
  • Проверяйте, что удаляются именно нужные записи — настройте фильтры по типу, категории и статусу.
  • Если есть сомнения, сначала переключите удаление на перевод в черновики (wp_update_post(['ID' => $post_id, 'post_status' => 'draft'])), чтобы не потерять информацию окончательно.
  • Планируйте удаление в ночное время, чтобы не влиять на пользователей.

Заключение

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

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

Как установить автоматическую загрузку изображений в WordPress при добавлении поста
02.02.2026
Создаем кастомный тип записей с таксономиями и REST API в WordPress
23.12.2025
Как создать адаптивный контейнер для Gutenberg в WordPress
25.11.2025
Как создать автоматический кеш для REST API WordPress
22.02.2026
Как создать автозаполняемое поле в WordPress с примерами кода
03.01.2026