WPExperts

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

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

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

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

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

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

Автоматизация удаления контента с помощью WP Cron и пользовательского кода

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

Создаем функцию для удаления постов старше 1 года

Добавьте следующий код в файл functions.php вашей темы или в кастомный плагин:

function wpexperts_delete_old_posts() {
    global $wpdb;
    $date_threshold = date('Y-m-d H:i:s', strtotime('-1 year'));
    $query = $wpdb->prepare(
        "DELETE p, tr, pm FROM {$wpdb->posts} p
        LEFT JOIN {$wpdb->term_relationships} tr ON (p.ID = tr.object_id)
        LEFT JOIN {$wpdb->postmeta} pm ON (p.ID = pm.post_id)
        WHERE p.post_type = 'post' AND p.post_date < %s",
        $date_threshold
    );
    $wpdb->query($query);
}

// Планируем событие, если оно не запланировано
if (!wp_next_scheduled('wpexperts_daily_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpexperts_daily_cleanup');
}

// Добавляем хук для выполнения
add_action('wpexperts_daily_cleanup', 'wpexperts_delete_old_posts');

Этот код удаляет все записи типа post, которые старше года, включая связанные таксономии и метаданные. Мы используем SQL-запрос для более эффективной очистки.

Как отключить автоматическое удаление

Если нужно остановить автоматическое удаление, удалите запланированное событие:

function wpexperts_deactivate_cleanup() {
    $timestamp = wp_next_scheduled('wpexperts_daily_cleanup');
    wp_unschedule_event($timestamp, 'wpexperts_daily_cleanup');
}
register_deactivation_hook(__FILE__, 'wpexperts_deactivate_cleanup');

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

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

1. Auto Delete Posts

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

Плюсы:

  • Простая настройка без знаний кода.
  • Гибкие условия удаления.
  • Поддержка удаления страниц и кастомных типов записей.

Минусы:

  • Может конфликтовать с другими плагинами, управляющими постами.

2. Post Expirator

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

Плюсы:

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

Минусы:

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

3. Clearfy Pro — инструмент для оптимизации и очистки

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

Плюсы:

  • Комплексное решение для оптимизации.
  • Встроенные инструменты безопасности и производительности.

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

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

Рекомендуемые плагины для бэкапа:

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

Можно адаптировать функцию удаления под свои задачи, например:

  • Удалять посты только из определенных категорий.
  • Исключать важные записи по ID или меткам.
  • Удалять старые страницы, кастомные типы записей или вложения.

Пример фильтрации по категории и исключению по ID

function wpexperts_delete_old_posts_filtered() {
    $date_threshold = date('Y-m-d H:i:s', strtotime('-6 months'));
    $excluded_ids = array(12, 34); // ID постов, которые не удалять

    $args = array(
        'post_type'      => 'post',
        'date_query'     => array(
            array('before' => $date_threshold),
        ),
        'category_name'  => 'news',
        'post__not_in'   => $excluded_ids,
        'posts_per_page' => -1,
        'fields'         => 'ids',
        'post_status'    => 'publish',
    );

    $old_posts = get_posts($args);

    foreach ($old_posts as $post_id) {
        wp_delete_post($post_id, true); // true для полного удаления
    }
}
add_action('wpexperts_daily_cleanup', 'wpexperts_delete_old_posts_filtered');

Этот код удалит все опубликованные посты из категории news, старше 6 месяцев, кроме тех, которые указаны в исключениях.

Обзор и рекомендации

Автоматизация удаления старого контента в WordPress — мощный инструмент для поддержания чистоты и производительности сайта. Если вы готовы работать с кодом, WP Cron и кастомные функции дадут гибкость и контроль. Если нет — используйте проверенные плагины, например, Auto Delete Posts или Post Expirator.

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

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

×
до 3225₽

Продавай темы и плагины WordPress!

Лови с каждой продажи

Начать ⋙