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

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

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

Ручное удаление старых записей — утомительный процесс, который со временем становится неэффективным. Автоматизация позволяет:

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

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

Настройка удаления через WP Cron и пользовательский код

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

Создание функции удаления по дате

Пример функции для удаления записей старше 30 дней из категории «Новости»:

function wpbloger_delete_old_posts() {
    $args = array(
        'post_type'      => 'post',
        'posts_per_page' => -1,
        'date_query'     => array(
            array(
                'column' => 'post_date',
                'before' => '30 days ago',
            ),
        ),
        'category_name'  => 'novosti',
        'fields'         => 'ids',
        'post_status'    => 'publish',
    );

    $old_posts = get_posts($args);

    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            wp_delete_post($post_id, true); // true — удаление без возможности восстановления
        }
    }
}

Регистрация задачи WP Cron

Добавим расписание и хук для запуска функции раз в сутки:

// Добавление собственного расписания
function wpbloger_cron_schedules($schedules) {
    if (!isset($schedules['daily'])) {
        $schedules['daily'] = array(
            'interval' => 86400, // 24 часа
            'display'  => __('Ежедневно'),
        );
    }
    return $schedules;
}
add_filter('cron_schedules', 'wpbloger_cron_schedules');

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

// Привязка функции к событию
add_action('wpbloger_daily_delete_old_posts', 'wpbloger_delete_old_posts');

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

Если вы не хотите писать код, можно использовать готовые решения. Один из популярных плагинов — Post Expirator. Он позволяет настроить дату истечения срока для каждой записи, после чего посты могут удаляться, менять статус или категорию.

Особенности Post Expirator

  • Настройка срока действия записи вручную или по умолчанию
  • Варианты удаления: удаление, перевод в черновик, смена категории и др.
  • Удобный интерфейс в редакторе записи

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

Оптимизация и безопасность при удалении контента

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

  • Резервное копирование. Перед запуском удаления рекомендуем настроить автоматические бэкапы — например, через WPShop Backup или другие проверенные решения.
  • Тестирование на тестовом сайте. Запустите код на копии сайта, чтобы избежать случайной потери нужного контента.
  • Логирование. Добавьте запись в лог удаляемых ID, чтобы отслеживать процесс и при необходимости откатываться.

Пример добавления простого логирования в файл:

function wpbloger_log_deleted_posts($post_ids) {
    $log_file = WP_CONTENT_DIR . '/deleted-posts.log';
    $date = date('Y-m-d H:i:s');
    $log_data = $date . ' | Deleted posts: ' . implode(',', $post_ids) . "\n";
    file_put_contents($log_file, $log_data, FILE_APPEND);
}

// В основной функции удаления вызвать после удаления:
// wpbloger_log_deleted_posts($old_posts);

Автоматизация через плагин WPGPT для мониторинга контента

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

Пример использования WPGPT для анализа устаревших постов

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

Это позволяет идти дальше простой даты публикации и учитывать качество и релевантность постов.

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

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

Если требуется удобный инструмент с AI-поддержкой, обратите внимание на WPGPT.

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

⭐⭐⭐⭐⭐
Как настроить кэширование в WordPress для ускорения сайта
09.01.2026
Как использовать хук pre_get_posts для оптимизации SQL-запросов в WordPress
06.05.2026
Как решить проблему замедления WooCommerce при большом количестве продуктов
09.06.2026
Как решить проблему нерабочих AJAX-запросов в WooCommerce: практическое руководство
22.06.2026
Как создать автоматические уведомления о обновлениях тем и плагинов WordPress
28.12.2025
×

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

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

пишет статьи

готовит SEO

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

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