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

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

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

Удаление неактивных корзин помогает:

  • уменьшить размер таблиц в базе данных, особенно wp_woocommerce_sessions;
  • ускорить запросы к базе и общую производительность WooCommerce;
  • снизить риски конфликтов с плагинами и обновлениями.

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

Для диагностики выполните SQL-запрос в базе данных через phpMyAdmin или WP CLI:

SELECT COUNT(*) AS total_sessions, MIN(session_expiry) AS oldest_expiry FROM wp_woocommerce_sessions;

Если total_sessions очень большой (тысячи и больше), есть смысл очищать устаревшие записи. Также проверяйте дату oldest_expiry — если записи старше 30 дней, их можно безопасно удалить.

Пошаговое удаление неактивных корзин через код

1. Написание функции удаления устаревших сессий

В WooCommerce сессии сохраняются с полем session_expiry — UNIX timestamp времени истечения действия сессии. Мы удалим записи с истекшим сроком более 30 дней назад.

function premiumwp_delete_expired_woocommerce_sessions() {
    global $wpdb;
    $table = $wpdb->prefix . 'woocommerce_sessions';
    $threshold = time() - 30 * DAY_IN_SECONDS; // 30 дней назад
    
    $deleted = $wpdb->query(
        $wpdb->prepare(
            "DELETE FROM $table WHERE session_expiry < %d",
            $threshold
        )
    );
    return $deleted;
}

2. Запуск функции вручную и через WP Cron

Для однократного запуска добавьте в functions.php темы или выполните через WP CLI:

echo premiumwp_delete_expired_woocommerce_sessions();

Для автоматической периодической очистки добавьте WP Cron:

add_action('premiumwp_daily_cleanup', 'premiumwp_delete_expired_woocommerce_sessions');

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

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

Для проверки выполните SQL-запрос повторно и сравните количество записей до и после удаления:

SELECT COUNT(*) FROM wp_woocommerce_sessions;

Также мониторьте нагрузку сервера и скорость отклика страниц корзины и оформления заказа. Для оценки изменений используйте такие инструменты, как Query Monitor или New Relic.

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

  • Удаление активных сессий: Если период удаления слишком короткий (например, 1 день), вы рискуете удалить активные корзины. Используйте 30 дней или больше.
  • Ошибки прав доступа к базе данных: Убедитесь, что пользователь БД, под которым работает WordPress, имеет права DELETE для таблицы wp_woocommerce_sessions.
  • Отсутствие таблицы wp_woocommerce_sessions: В старых версиях WooCommerce данные хранятся в wp_options под ключом _woocommerce_session_. Для таких случаев требуется иной способ очистки.
  • Неправильный префикс таблиц: Убедитесь, что используете правильный префикс $wpdb->prefix, особенно если сайт использует мультисайт или кастомный префикс.

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

  • Выполняйте удаление сессий в ночное время или периоды низкой нагрузки, чтобы не ухудшать опыт пользователей.
  • Регулярно делайте резервные копии базы данных перед массовыми изменениями.
  • Используйте транзакции и проверяйте ошибки выполнения запросов.
  • Для сайтов с большим трафиком рекомендуем ограничить период хранения сессий до 30-60 дней.
  • Если вы используете плагин Clearfy Pro, в нем есть опции для автоматической очистки сессий и оптимизации базы — интегрируйте код с его функционалом для удобства.

Сравнение способов удаления неактивных корзин в WooCommerce

МетодОписаниеПлюсыМинусы
Ручной SQL-запрос Прямое удаление записей из таблицы сессий через phpMyAdmin или WP CLI Быстро, не требует кода Риск ошибок, нет автоматизации
Код в functions.php + WP Cron Автоматическое удаление устаревших сессий с помощью PHP-функции и планировщика Автоматизация, контроль через код Требует навыков кодирования, нужно следить за WP Cron
Плагины (например, Clearfy Pro) Встроенные функции очистки и оптимизации базы WooCommerce Удобство, дополнительные инструменты оптимизации Может влиять на производительность, требует установки плагина
WooCommerce: как удалить неактивные корзины и оптимизировать базу данных
05.07.2026
Как автоматизировать обновление метаданных в WordPress
09.01.2026
Как установить и настроить автоматическое создание резервных копий в WordPress
15.11.2025
WooCommerce: решение проблемы с неправильной отправкой писем подтверждения заказа
23.04.2026
WooCommerce: как автоматически удалять неактивные корзины для оптимизации базы данных
19.07.2026