Как удалить брошенные корзины в Битрикс - разработка и поддержка сайтов BUSSOL


Заказать разработку

Как удалить брошенные корзины в Битрикс

Автор:

Дата публикации:

Как удалить брошенные корзины в Битрикс

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

Скрипт удаления брошенных корзин можно реализовать через ajax либо создать какой-нибудь файл php и в него внести такой код:


use \Bitrix\Main\Loader;

Loader::includeModule('catalog');
Loader::includeModule('sale');

$basket = \Bitrix\Sale\Basket::getList(
    array(
        'select'  => array('FUSER_ID'),
        'filter' => array('ORDER_ID' => 'NULL',),
    )
);
while($Item = $basket->Fetch()){
    CSaleBasket::DeleteAll($Item['FUSER_ID'], false);
}

И конечно не забудьте в самом начале файла подключить пролог, иначе ничего не сработает. Далее, вводим адрес созданного файла в адресной строке и проверяем отсутствие брошенных корзин в админке по пути Админка - Магазин - Покупатели - Корзины.

А теперь все по порядку. Чтобы сделать выборку корзин, нужно обязательно подключить модуль торговый каталог (catalog) и модуль интернет-магазин (sale). Далее выбираем брошенные корзины - это корзины, которые не привязаны к заказу, т.е. в фильтре значение ORDER_ID устанавливаем в NULL. В выборке мы должны получить ID пользователей, которые создали брошенные корзины - это параметр FUSER_ID. Значение параметра FUSER_ID не всегда совпадает с ID пользователя на сайте. А именно, если в корзину товары добавлял авторизованный пользователь, то FUSER_ID = USER_ID (ID пользователя в системе). В противном случае в FUSER_ID попадает ID неавторизованного покупателя, который Битрикс генерирует автоматически.

И наконец в цикле while мы пробегаем по всем таким покупателям и удаляем корзины, которые к ним привязаны с помощью метода DeleteAll класса CSaleBasket модуля интернет-магазин.


241027, Россия, Брянская область, поселок Путевка, улица Рослальская, дом 8, кв.121
Телефон: +7 (953) 298-86-66

4 ноября 2023


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

Скрипт удаления брошенных корзин можно реализовать через ajax либо создать какой-нибудь файл php и в него внести такой код:


use \Bitrix\Main\Loader;

Loader::includeModule('catalog');
Loader::includeModule('sale');

$basket = \Bitrix\Sale\Basket::getList(
    array(
        'select'  => array('FUSER_ID'),
        'filter' => array('ORDER_ID' => 'NULL',),
    )
);
while($Item = $basket->Fetch()){
    CSaleBasket::DeleteAll($Item['FUSER_ID'], false);
}

И конечно не забудьте в самом начале файла подключить пролог, иначе ничего не сработает. Далее, вводим адрес созданного файла в адресной строке и проверяем отсутствие брошенных корзин в админке по пути Админка - Магазин - Покупатели - Корзины.

А теперь все по порядку. Чтобы сделать выборку корзин, нужно обязательно подключить модуль торговый каталог (catalog) и модуль интернет-магазин (sale). Далее выбираем брошенные корзины - это корзины, которые не привязаны к заказу, т.е. в фильтре значение ORDER_ID устанавливаем в NULL. В выборке мы должны получить ID пользователей, которые создали брошенные корзины - это параметр FUSER_ID. Значение параметра FUSER_ID не всегда совпадает с ID пользователя на сайте. А именно, если в корзину товары добавлял авторизованный пользователь, то FUSER_ID = USER_ID (ID пользователя в системе). В противном случае в FUSER_ID попадает ID неавторизованного покупателя, который Битрикс генерирует автоматически.

И наконец в цикле while мы пробегаем по всем таким покупателям и удаляем корзины, которые к ним привязаны с помощью метода DeleteAll класса CSaleBasket модуля интернет-магазин.


ДРУГИЕ СТАТЬИ

Возврат к списку
Gold partner INTEC Участник программы мониторинга качества внедрения

Заказать проект или работы:

Проверяем мессенджеры и почту 3 раза в день. Отвечаем в течении 24-х часов.

Заказать разработку