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

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

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

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

Проверьте, как долго товары остаются в корзине пользователей на вашем сайте. Для этого можно анализировать пользовательское поведение через Google Analytics или использовать логи сессий. Если корзина не очищается автоматически и товары остаются в ней более суток, это повод внедрять автоматическое удаление.

Стандартный WooCommerce не имеет встроенного механизма таймера для очистки корзины, что требует кастомизации или использования плагина.

Пошаговое решение: удаление товаров из корзины по таймеру

1. Добавляем мета-данные времени добавления товара в корзину

Используем хук woocommerce_add_to_cart, чтобы фиксировать время добавления товара в корзину:

add_action('woocommerce_add_to_cart', 'add_timestamp_to_cart_item', 10, 6);function add_timestamp_to_cart_item($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data) {    WC()->cart->cart_contents[$cart_item_key]['added_time'] = time();}

2. Создаём функцию очистки старых товаров из корзины

Функция будет проходить по корзине и удалять товары, добавленные дольше, чем заданный таймер (например, 24 часа):

function remove_old_cart_items() {    $cart = WC()->cart->get_cart();    $current_time = time();    $expiration_seconds = 24 * 60 * 60; // 24 часа    foreach ($cart as $cart_item_key => $cart_item) {        if (isset($cart_item['added_time']) && ($current_time - $cart_item['added_time'] > $expiration_seconds)) {            WC()->cart->remove_cart_item($cart_item_key);        }    }}

3. Запускаем очистку при каждой загрузке страницы корзины или оформления заказа

add_action('woocommerce_cart_loaded_from_session', 'remove_old_cart_items');add_action('woocommerce_before_checkout_form', 'remove_old_cart_items');

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

  • Добавьте товар в корзину и проверьте, что для этого товара в массиве WC()->cart->cart_contents появился ключ added_time с текущим timestamp.
  • Измените время на значение, превышающее 24 часа (например, через отладчик или вручную изменив timestamp), затем обновите страницу корзины — товар должен автоматически удалиться.
  • Убедитесь, что товары, добавленные менее 24 часов назад, остаются в корзине.

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

  • Не добавляется ключ added_time к товару в корзине.
    Причина: функция add_timestamp_to_cart_item не срабатывает из-за неправильного приоритета или отсутствия аргументов. Проверьте правильность подключения хука и количество передаваемых параметров.
  • Товары не удаляются по таймеру.
    Причина: функция очистки не вызывается, потому что хук подключён только к страницам корзины и оформления. Для более агрессивной очистки добавьте вызов функции на другие хуки, например, wp_loaded с проверкой сессии.
  • Нарушается работа кеширования корзины.
    Используйте исключения кеша для страниц корзины и оформления заказа, чтобы изменения отображались корректно.

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

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

Альтернативные варианты и сравнение

Метод Описание Плюсы Минусы
Код с хуками WooCommerce Добавление времени и удаление товаров на основе этого времени Гибкость, контроль, не требует плагинов Требует навыков PHP, возможна нагрузка при большом трафике
Плагины очистки корзины Готовые решения с настройками времени жизни корзины Простота установки, интерфейс настройки Может влиять на производительность, не всегда гибкие
Очистка через WP-Cron Периодическая очистка товаров в корзине по расписанию Меньшая нагрузка на страницы Зависит от корректной работы cron, задержки очистки

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

⭐⭐⭐⭐⭐
Как создать пресс-релиз в WordPress с автоматизацией отправки
05.02.2026
Как использовать REST API WordPress для создания и управления журналом
06.04.2026
Как отключить ненужные скрипты и стили в WordPress для улучшения производительности
10.05.2026
Как добавить уникальные мета-теги в WordPress для каждого записи
27.03.2026
Как автоматически отключить комментарии в WordPress на старых постах
30.03.2026
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙