Когда посетитель впервые добавляет товар в корзину, для него создаётся сессия. По умолчанию она длится 48 часов. После истечения этого срока товары в корзине удаляются, и при следующем визите корзина будет пустой.
Эта сессия корзины не связана с настройкой «Удерживать запас» в разделе «Товары → Запасы». Настройка «Удерживать запас» применяется к заказам со статусом «Ожидает оплаты», а не к сессии корзины.
Важно: только новые посетители сразу попадают под изменение. У уже существующих пользователей корзина сохранится до окончания их текущей сессии. При необходимости можно ускорить очистку через WooCommerce → Состояние → Инструменты с помощью функции очистки сеансов клиентов.
Параметры wc_session_expiring и session_expiration управляют временем жизни сессии: первый задаёт момент предварительного истечения, второй — фактическое время окончания.
Фрагмент кода
Добавьте код в файл functions.php дочерней темы или используйте плагин для добавления пользовательских функций, например Code Snippets. Не добавляйте код напрямую в родительскую тему — он будет удалён при обновлении.
Значения времени задаются в секундах. Например, 47 часов = 60 * 60 * 47. Для теста можно временно указать 5 минут: 60 * 5.
<?php
// Устанавливает, когда сессия скоро истечёт
add_filter( 'wc_session_expiring', 'woocommerce_cart_session_about_to_expire' );
function woocommerce_cart_session_about_to_expire() {
// Значение по умолчанию — 47 часов
return 60 * 60 * 47;
}
// Устанавливает время полного истечения сессии
add_filter( 'wc_session_expiration', 'woocommerce_cart_session_expires' );
function woocommerce_cart_session_expires() {
// Значение по умолчанию — 48 часов
return 60 * 60 * 48;
}
Кэширование
Чтобы настройки работали корректно, убедитесь, что кэширование не мешает сессиям. При проблемах с «залипающими» корзинами очистите кэш плагинов и серверный кэш (при необходимости обратитесь к хостингу).
Расширения
Если вы не хотите использовать код, можно установить расширение из WooCommerce Marketplace для управления корзиной и её очисткой.
