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

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

В интернет-магазинах на WooCommerce часто возникает ситуация, когда пользователи добавляют товары в корзину, но не оформляют заказ. Это приводит к "зависшим" товарам, которые могут создавать ложное впечатление занятости товара или мешать проведению акций. Автоматическое удаление товаров из корзины по истечении заданного времени помогает поддерживать актуальность заказов и улучшает пользовательский опыт.

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

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

Шаг 1. Добавляем метку времени при добавлении товара в корзину

add_filter('woocommerce_add_cart_item_data', 'add_cart_item_timestamp', 10, 2); function add_cart_item_timestamp($cart_item_data, $product_id) {     $cart_item_data['added_timestamp'] = time();     return $cart_item_data; }

Этот фильтр добавляет текущее время в секунду как метку added_timestamp к каждому товару, помещённому в корзину.

Шаг 2. Проверяем и удаляем устаревшие товары при загрузке корзины

add_action('woocommerce_before_cart', 'remove_expired_cart_items'); function remove_expired_cart_items() {     $expiry_seconds = 1800; // 30 минут     $cart = WC()->cart->get_cart();     $removed = false;     foreach ($cart as $cart_item_key => $cart_item) {         if (isset($cart_item['added_timestamp'])) {             $added_time = $cart_item['added_timestamp'];             if ((time() - $added_time) > $expiry_seconds) {                 WC()->cart->remove_cart_item($cart_item_key);                 $removed = true;             }         }     }     if ($removed) {         wc_print_notice('Некоторые товары были удалены из корзины из-за истечения времени ожидания.', 'notice');     } }

Этот код проверяет все товары в корзине, и если с момента добавления прошло более 30 минут, товар удаляется. Сообщение информирует пользователя об удалении.

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

  1. Добавьте товар в корзину на сайте.
  2. Откройте страницу корзины сразу — товар должен отображаться.
  3. Измените время на сервере или подождите 30 минут.
  4. Обновите страницу корзины — устаревший товар должен быть удалён, и появится уведомление.
  5. Проверьте, что новые добавленные товары не удаляются преждевременно.

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

  • Товары не удаляются: возможно, кэширование страниц мешает обновлению корзины. Отключите кэширование для страниц корзины и оформления заказа. Проверьте корректность вызова WC()->cart->remove_cart_item().
  • Сообщение не отображается: убедитесь, что в теме используется функция wc_print_notices() для вывода уведомлений WooCommerce.
  • Время удаления слишком короткое или длинное: измените значение $expiry_seconds в коде под нужный таймаут.
  • Удаление товаров происходит при каждом обновлении страницы: проверьте, что метка added_timestamp устанавливается корректно при добавлении товара, а не обновляется при каждом запросе.
  • Конфликты с плагинами кэширования: исключите страницы корзины и оформления заказа из кэширования.

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

  • Не храните временные метки в базе отдельно — используйте данные корзины, чтобы не увеличивать нагрузку на базу.
  • Убедитесь, что код не вызывает лишних запросов к базе при каждом просмотре страниц.
  • Минимизируйте вывод уведомлений, чтобы не раздражать пользователей.
  • Проверяйте совместимость с плагинами кеширования и оптимизаторами, отключая кеш на страницах корзины.
  • Тестируйте на staging-сайте перед внедрением на продакшн.

Сравнение способов реализации автоматического удаления товаров из корзины

Метод Плагин Код Плюсы Минусы
Плагин "WooCommerce Cart Expiration" Да Нет Простая настройка, готовое решение Дополнительная нагрузка, ограниченная гибкость
Кастомный код с меткой времени Нет Да Полный контроль, отсутствие лишних плагинов Требует навыков, возможны ошибки при обновлениях WooCommerce

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
WooCommerce: автоматическое удаление товаров из корзины по таймеру
08.06.2026
Как добавить автоматическое отправление отзывов в WordPress с примерами кода и плагинов
13.11.2025
Как удалить товар из корзины WooCommerce без перезагрузки страницы
27.04.2026
Как создать автоматический журнал изменений в WordPress с примерами кода и плагинов
13.04.2026
Как сделать автоматический журнал изменений в WordPress с примерами кода и плагинов
14.03.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙