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

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

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

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

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

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

Самый простой способ — использовать специализированные плагины. Рассмотрим несколько популярных и удобных:

  • WP Auto Delete Posts — позволяет настроить автоматическое удаление записей по возрасту, категории, статусу и другим параметрам. Есть гибкие фильтры и возможность планировать задачи.
  • Auto Delete Posts — простой плагин с базовыми настройками по удалению старого контента. Поддерживает выбор по дате публикации и типу записи.
  • Clearfy Pro — универсальный плагин оптимизации, в котором есть модуль для автоматического удаления ревизий, спама и устаревших записей. Подробнее о Clearfy на wpshop.ru.

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

Автоматизация удаления через WP Cron и кастомный код

Если нужен более гибкий подход, можно написать собственный код, который будет запускать удаление по расписанию с помощью WP Cron. Рассмотрим пример функции, которая удаляет записи старше 90 дней:

function wp_blog_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'before' => '90 days ago',
                'inclusive' => true,
            ),
        ),
        '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
if (!wp_next_scheduled('wp_blog_daily_delete_old_posts')) {
    wp_schedule_event(time(), 'daily', 'wp_blog_daily_delete_old_posts');
}

// Хук на выполнение функции
add_action('wp_blog_daily_delete_old_posts', 'wp_blog_delete_old_posts');

Этот код нужно добавить в файл functions.php вашей темы или в кастомный плагин. Он настроит ежедневную проверку и удаление записей старше 90 дней.

Пояснения к коду

Мы используем get_posts с параметром date_query, чтобы получить ID всех публикаций старше 90 дней. Затем в цикле вызываем wp_delete_post с параметром true, чтобы удалить записи без перемещения в корзину.

WP Cron — это механизм планирования задач, встроенный в WordPress. С помощью wp_schedule_event мы запускаем событие раз в сутки, которое активирует удаление.

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

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

Пример расширенного кода для удаления записей старше 180 дней и с типами post и event:

function wp_blog_delete_custom_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'before' => '180 days ago',
                'inclusive' => true,
            ),
        ),
        'post_type' => array('post', 'event'),
        '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);
        }
    }
}

if (!wp_next_scheduled('wp_blog_weekly_delete_custom_old_posts')) {
    wp_schedule_event(time(), 'weekly', 'wp_blog_weekly_delete_custom_old_posts');
}

add_action('wp_blog_weekly_delete_custom_old_posts', 'wp_blog_delete_custom_old_posts');

В этом примере удаление происходит раз в неделю и охватывает два типа записей. Такой подход подходит для крупных сайтов с разнообразным контентом.

Резервное копирование и тестирование удаления

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

Для бэкапов можно использовать плагин WP Backup или аналогичные решения.

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

Выводы и рекомендации

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

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как использовать хук pre_get_posts для фильтрации записей в WordPress
04.03.2026
Как установить ограничения на сохранение данных через REST API в WordPress
28.02.2026
Как использовать хук wp_blog для изменения заголовка страницы в WordPress
13.12.2025
WooCommerce: как правильно удалять товары с очисткой связанных данных
25.04.2026
Как удалить неиспользуемые шорткоды в WordPress: практическое руководство
08.02.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше