WooCommerce: как автоматически удалять старые корзины покупателей

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

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

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

Проверьте количество записей в таблице сессий WooCommerce:

SELECT COUNT(*) FROM wp_woocommerce_sessions;

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

SELECT session_key, session_expiry FROM wp_woocommerce_sessions ORDER BY session_expiry ASC LIMIT 10;

Обратите внимание: стандарт WooCommerce очищает сессии примерно за 48 часов, но в реальности часто данные остаются дольше из-за особенностей сервера и настроек.

Пошаговое решение: автоматическая очистка старых корзин

1. Создание WP-Cron задачи для удаления старых сессий

Добавим в файл functions.php вашей темы или в собственный плагин код, который ежесуточно будет удалять сессии старше 2 дней.

function custom_wc_cleanup_old_sessions() {
    global $wpdb;
    $expiration = time() - (2 * DAY_IN_SECONDS); // 2 дня в секундах
    $table = $wpdb->prefix . 'woocommerce_sessions';
    $deleted = $wpdb->query(
        $wpdb->prepare(
            "DELETE FROM $table WHERE session_expiry < %d",
            $expiration
        )
    );
    return $deleted;
}

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

// Хук на событие
add_action('custom_wc_cleanup_sessions_event', 'custom_wc_cleanup_old_sessions');

2. Очистка сессий вручную (для проверки)

Для отладки можно вызвать функцию напрямую из админки с помощью временного кода:

add_action('admin_init', function() {
    if (isset($_GET['cleanup_wc_sessions']) && current_user_can('manage_options')) {
        $deleted = custom_wc_cleanup_old_sessions();
        echo 'Удалено старых сессий: ' . $deleted;
        exit;
    }
});

Переходите по ссылке https://your-site.com/wp-admin/?cleanup_wc_sessions=1 чтобы проверить работу функции.

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

  • Запустите SQL-запрос SELECT COUNT(*) FROM wp_woocommerce_sessions; до и после очистки.
  • Проверьте, что после первого запуска количество сессий уменьшилось.
  • Через 24 часа проверьте, что количество сессий регулярно не растет бесконтрольно.
  • Убедитесь, что клиенты не теряют свои активные корзины преждевременно — старые сессии удаляются только после 2 дней без активности.

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

  • WP-Cron не срабатывает: если на сайте мало посетителей, cron-задачи могут не запускаться. Решение: настроить системный cron на сервере, вызывающий wp-cron.php или использовать плагин для имитации cron.
  • Неверный префикс таблиц: если в базе нестандартный префикс, используйте $wpdb->prefix для построения имени таблицы, как в примере.
  • Удаление активных сессий: настройте время хранения сессий адекватно (2 дня — оптимально), чтобы не потерять корзины активных пользователей.
  • Отсутствие прав на удаление: убедитесь, что база данных пользователя WordPress имеет права DELETE для таблицы wp_woocommerce_sessions.

Практические советы по оптимизации и безопасности

  • Оптимизируйте базу данных: по расписанию запускайте OPTIMIZE TABLE wp_woocommerce_sessions; для уменьшения фрагментации.
  • Регулярно обновляйте WooCommerce — в новых версиях могут улучшить управление сессиями.
  • Резервное копирование: перед внесением изменений в базу сделайте резервную копию.
  • Используйте Clearfy Pro для общей оптимизации сайта и удаления дублей данных, что косвенно помогает производительности.

Сравнение методов очистки сессий WooCommerce

МетодОписаниеПреимуществаНедостатки
WP-Cron с кастомным кодомАвтоматическая очистка через wp_schedule_eventГибкость, контроль над временем храненияЗависит от посещаемости сайта, требует знаний PHP
Плагины оптимизации (например, Clearfy Pro)Автоматическая очистка и оптимизацияПростота установки, дополнительные функцииЗависимость от стороннего кода, могут быть платными
Ручная очистка через SQLВыполнение SQL-запросов вручнуюПолный контроль, быстрый эффектРиск ошибок, требует доступа к БД
Как автоматизировать создание копий шаблонов WordPress для кастомизации
28.01.2026
Как создать динамический шаблон для WooCommerce с кастомным выводом товаров
17.02.2026
Как создать собственный вид регистрации в WordPress с примерами кода и плагинов
25.11.2025
Как изменить URL страницы регистрации WordPress без плагинов
13.01.2026
Автоматизация установки и настройки темы WordPress: пошаговое руководство
16.03.2026