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

|

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

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

Автоматическое удаление просмотренных товаров из корзины помогает поддерживать актуальность заказа и улучшает UX. Но WooCommerce по умолчанию не умеет различать просмотренные товары и не предоставляет встроенных средств для их удаления из корзины.

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

Шаг 1. Отслеживание просмотренных товаров

WooCommerce хранит историю просмотров товаров в cookie woocommerce_recently_viewed. Она содержит ID последних просмотренных товаров. Чтобы использовать эту информацию, нужно получить массив ID просмотренных товаров.

function get_viewed_products_ids() {
    if ( empty( $_COOKIE['woocommerce_recently_viewed'] ) ) {
        return [];
    }
    $viewed_products = explode( '|', sanitize_text_field( wp_unslash( $_COOKIE['woocommerce_recently_viewed'] ) ) );
    $viewed_products = array_filter( array_map( 'absint', $viewed_products ) );
    return $viewed_products;
}

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

Создаем функцию, которая сравнит товары в корзине с просмотренными и удалит совпадения.

function wc_remove_viewed_products_from_cart() {
    if ( ! is_user_logged_in() ) {
        return; // Ограничимся залогиненными пользователями для стабильности
    }
    $viewed_ids = get_viewed_products_ids();
    if ( empty( $viewed_ids ) ) {
        return;
    }
    $cart = WC()->cart;
    if ( ! $cart ) {
        return;
    }

    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
        $product_id = $cart_item['product_id'];
        if ( in_array( $product_id, $viewed_ids, true ) ) {
            $cart->remove_cart_item( $cart_item_key );
        }
    }
}

Шаг 3. Запуск функции в нужный момент

Оптимальное время — перед загрузкой корзины или при инициализации WooCommerce. Подключим функцию к хуку woocommerce_before_cart:

add_action( 'woocommerce_before_cart', 'wc_remove_viewed_products_from_cart' );

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

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

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

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

Метод Описание Плюсы Минусы
Код на хуке woocommerce_before_cart Самописная функция, удаляющая товары из корзины по списку просмотренных Полный контроль, без плагинов, легкая доработка Требует навыков PHP, не работает с кэшем и гостями без доработок
Плагин с аналогичной функцией Использование готовых решений для очистки корзины Простота установки, поддержка Может быть избыточным, нагрузка, ограниченная кастомизация
Использование JS + AJAX Удаление товаров по просмотрам на стороне клиента Гибкость, мгновенная реакция Зависимость от браузера, сложнее отладка
WooCommerce: как автоматически возвращать товар в склад после отмены заказа
07.07.2026
WooCommerce: как автоматически удалять отменённые и неактивные заказы
08.07.2026
WooCommerce: как автоматически удалять товары из корзины после оплаты с подробной инструкцией
20.06.2026
Как использовать REST API WordPress для запроса пользователей по мета-полям
13.04.2026
WooCommerce: как автоматически удалять заказы по определённому статусу
24.05.2026
×
-15%
на премиум плагин
Clearfy

Защитите сайт!

Включить Clearfy »