Скидки на товары определённых категорий WooCommerce в корзине без плагина 1

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

Суть функции и её логика:

  1. Задаём параметры скидки для категории товаров. Если категорий не много, то можно задать вручную
  2. Проходим в цикле по элементам корзины WooCommerce что бы заполнить массив данных. В этом случае функция учитывает только первую категорию к которой относится товар.
  3. Массив данных содержит общее количество товаров, сумму, и товары(здесь они не используются)
  4. Добавление скидки в зависимости от наличия условия.

Функция немного «сыровата», но в любом случае её можно довести до нужно логического решения.

Так же следует обратить внимание, что WooCommerce при вызове $cart->add_fee($name,$discount) требует что бы $name было уникальным в рамках корзины. Т.е если у вас название скидки имеет одно и то же имя для всех категорий — то будет добавлена только одна скидка.

Что бы код работал — нужно его добавить в файл function.php вашего шаблона сайта.

Визуально работа данной функции выглядит таким образом:

Скидка на категорию в корзине WooCommerce
Пример работы функции

One Comment

  1. Здравствуйте! Ваш код работает, но показывает скидку только для одной категории, а я добавил как в вашем примере 2 разные категории. Я так понимаю вы именно это имели ввиду «Так же следует обратить внимание, что WooCommerce при вызове $cart->add_fee($name,$discount) требует что бы $name было уникальным в рамках корзины. Т.е если у вас название скидки имеет одно и то же имя для всех категорий – то будет добавлена только одна скидка.» Я уже несколько раз перечитал эту фразу но совершенно не могу понять как мне задать уникальное имя? В вашем примере имя скидки формируется из «$cart->add_fee(«Скидка на {$name}», где name подставляется из того что я задал для каждой категории в самом начале сниппета. У меня так же как в примере — Категория 1 и Категория 2, name у них разный, но в итоге в корзине я вижу только «Скидка на Категория 2». Я не программист но стараюсь понять. Подскажите пожалуйста что все таки надо сделать что бы в корзине отображались скидки на все категории а не на одну. Спасибо!

Добавить комментарий для Павел Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *