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

Что такое забытые корзины в WooCommerce и почему их важно удалять

Забытые корзины – это товары, добавленные пользователем, но не оформленные в заказ. Они занимают место в базе данных, могут замедлять работу сайта и создавать путаницу в аналитике. Автоматическое удаление таких корзин помогает поддерживать чистоту базы данных и ускорять работу WooCommerce.

Диагностика проблемы с забытыми корзинами в WooCommerce

Чтобы понять, есть ли проблема с накоплением забытых корзин, проверьте количество сессий и временные записи в базе данных:

  • Подключитесь к базе данных через phpMyAdmin или аналог;
  • Выполните запрос к таблице wp_woocommerce_sessions:
    SELECT COUNT(*) FROM wp_woocommerce_sessions;
  • Если число записей слишком большое (сотни или тысячи), стоит настроить автоматическую очистку.

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

Пошаговое решение: автоматическое удаление забытых корзин с помощью WP-Cron

WooCommerce хранит сессии пользователей в таблице wp_woocommerce_sessions. Нужно настроить регулярную очистку записей старше определённого времени (например, 30 дней).

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

function wc_clear_old_sessions() {
    global $wpdb;
    $expire = 30; // время в днях
    $expiration_time = time() - ( $expire * DAY_IN_SECONDS );
    
    // Таблица сессий WooCommerce
    $table = $wpdb->prefix . 'woocommerce_sessions';
    
    // Удаляем записи, где expiration меньше текущего времени минус $expire дней
    $result = $wpdb->query( 
        $wpdb->prepare(
            "DELETE FROM {$table} WHERE expiration < %d",
            $expiration_time
        )
    );

    return $result;
}

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

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

add_action( 'wc_clear_old_sessions_hook', 'wc_clear_old_sessions' );

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

Этот код запустит очистку забытых корзин один раз в сутки.

3. Остановка задачи при деактивации плагина или темы

function wc_clear_old_sessions_deactivate() {
    $timestamp = wp_next_scheduled( 'wc_clear_old_sessions_hook' );
    if ( $timestamp ) {
        wp_unschedule_event( $timestamp, 'wc_clear_old_sessions_hook' );
    }
}
register_deactivation_hook( __FILE__, 'wc_clear_old_sessions_deactivate' );

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

После активации кода проверьте, что задача запланирована:

  • Установите плагин WP Crontrol для управления cron задачами;
  • Перейдите в раздел «Cron Events» и найдите wc_clear_old_sessions_hook с периодичностью daily;
  • Чтобы проверить работу функции вручную, можно вызвать wc_clear_old_sessions() через консоль WP или временно добавить вызов в functions.php и посмотреть, сколько строк было удалено;
  • Проверьте таблицу wp_woocommerce_sessions до и после запуска задачи – количество записей должно уменьшиться.

Частые ошибки и как их исправить

  • Ошибка: Задача cron не запускается.
    Причина: Cron может не работать из-за отсутствия посетителей сайта или конфликтов с плагинами.
    Решение: Настройте системный cron на сервере или используйте плагин для управления WP-Cron.
  • Ошибка: Функция не удаляет записи.
    Причина: Неправильное имя таблицы, особенно если установлен префикс отличный от wp_.
    Решение: Используйте $wpdb->prefix для правильного префикса, как показано в коде.
  • Ошибка: Удаляются нужные сессии.
    Причина: Слишком короткий срок хранения.
    Решение: Увеличьте значение в переменной $expire (например, 30-60 дней).

Практические советы по безопасности и производительности

  • Регулярно создавайте резервные копии базы данных перед внедрением изменений.
  • Не устанавливайте слишком частые интервалы очистки, чтобы не перегружать сервер.
  • Используйте WP-Cron только при наличии регулярного трафика, иначе настройте системный cron на хостинге.
  • Для крупных интернет-магазинов рекомендуется использовать специализированные плагины очистки и оптимизации, например Clearfy.

Сравнение вариантов автоматической очистки забытых корзин

МетодПлюсыМинусыРекомендации
Код на PHP с WP-Cron (как в статье)Полный контроль, бесплатно, легко адаптируетсяЗависит от WP-Cron, требует знаний кодаПодходит для небольших и средних магазинов
Системный cron на сервереНадёжно, не зависит от трафикаТребует доступа к серверу и навыков администрированияДля профессиональных сайтов с большим трафиком
Плагины очистки, например ClearfyУдобно, дополнительные функции оптимизацииПлатные, могут влиять на производительностьДля пользователей без технических навыков
Как использовать WPGPT для создания автоматического контента в WordPress
04.03.2026
Как создать собственный тип записей (Custom Post Type) в WordPress
03.12.2025
Как правильно настроить WooCommerce для продавцов с разным уровнем доступа
17.04.2026
Как вывести и использовать метаданные товара WooCommerce в шаблонах
03.05.2026
Как создать автоматическую резервную копию WordPress с помощью WPRemark
20.02.2026