Woocommerce: как сделать скидку на всю сумму в корзине?

Сегодня понадобилось клиенту сделать скидку на всю сумму в корзине, в зависимости от условий суммы, в частности были условия скидка 3% от суммы 500 тыс. до 1 млн., 10% от 1 млн. до 3 млн. и 15% свыше 3 млн. Пробовал разные плагины, коды, которые нашел в интернете — ничего не помогало. Плагины делали что хотели, но не то что нужно, а коды вообще не работали. Я тоже поискал и убедился, что так. Тема у него самописная, и писал ее я. Конечно он обратился ко мне. Коды не работали по причине того, что не совместимы сновой версией WooCommerce.

Пришлось самому придумывать, и всё оказалось очень просто. Кстати, работает с версиями WooCommerce 3 и выше, самая последняя версия 7.5.1 на текущий момент. Код работает.

<?php
// Скидки на итоговую сумму в корзине
function wplife_discount_total(WC_Cart $cart) {
  if ($cart->subtotal >= 500000 && $cart->subtotal < 1000000 ){ // Если сумма равна или больше 500 тыс. и меньше 1 млн.
    $discount = $cart->subtotal * 0.03; // 0.03 - это 3% скидка
    $cart->add_fee('Скидка в 3% ', -$discount);
  }
  if ($cart->subtotal >= 1000000 && $cart->subtotal < 3000000 ){ // Если сумма равна или больше 1 млн. и меньше 3 млн.
    $discount = $cart->subtotal * 0.10; // 0.10 - это 10% скидка
    $cart->add_fee('Скидка в 10% ', -$discount);
  }
  if ($cart->subtotal >= 3000000 ){ // Если сумма равна или больше 3 млн.
    $discount = $cart->subtotal * 0.15; // 0.15 - это 15% скидка
    $cart->add_fee('Скидка в 15% ', -$discount);
  }
// Код можно продолжать по аналогии с предыдущими строками
}
add_action('woocommerce_cart_calculate_fees' , 'wplife_discount_total');
?>

Вот такой код, нужно добавить в functions.php вашей дочерней темы или основной. Код без учета перевода, сразу на русском.

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

Скидка на общую сумму в корзине
И соответственно в форме заказа:
Скидка на всю сумму в заказе

Конечно же поправьте код на свои условия, я думаю по комментариям там все понятно.

Оставьте комментарий

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

Пролистать наверх