WooCommerce – Условная прогрессивная скидка, основанная на количестве товаров в корзине

Я хотел бы иметь условную прогрессивную скидку, основанную на количестве предметов в корзине. После того, как вы добавили 2 товара в корзину, вы получаете скидку. Больше продуктов вы добавляете и больше рабата вы получаете.

Например:

  • 1 продукт – полная цена (без скидки)
  • 2 продукта – полная цена с 10% скидкой от комбинированной цены
  • 3 продукта – полная цена с 15% скидкой от комбинированной цены
  • 4 продукты – полная цена с 20% скидкой от комбинированной цены
  • И так далее …

У меня есть поиск по интернету без каких-либо успехов. При поиске скидок я просто попадаю на купонную функцию WooCommerce, или я получаю какой-то старый неправильный код …

Есть идеи? Как мне это сделать?

Является ли это возможным?

Благодарю.

Да, его можно использовать, чтобы добиться этого. Обычно для скидок в корзине мы используем купоны WooCommerce. Здесь купоны не присваиваются. Я буду использовать здесь отрицательный условный взнос, который становится скидкой .

Итак, вот этот код:

/* The calculation: * — The count => Based on quantity by item and total of items in cart * — The percent is 0.05 (5%) and it grows with each additional item (as you asked) * — I add the subtotal of each item line to get the total sum… */ function cart_progressive_discount() { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; $cart_count = 0; $cart_lines_total = 0; foreach(WC()->cart->get_cart() as $item_key => $cart_item){ // Adds the quantity of each item to the count $cart_count = $cart_count + $cart_item["quantity"]; // Adds The items subtotal to total $cart_lines_total += $cart_item["line_total"]; } // percent is 5% $percent = -0.05; // We fix the discount max to 50% (-0.05 * 10) $cart_count_max = 10; // Discount calculations: $discount = $percent * $cart_count * $cart_lines_total; $discount2 = $percent * $cart_count_max * $cart_lines_total; $discount_text = __( 'Quantity discount', 'woocommerce' ); // For 0 or 1 item if( $cart_count < 2 ) { return; } // Between 2 and 9 items, progressive incremental discount based on item quantity (From 10% to 45%) elseif( $cart_count > 1 && $cart_count < 10) { WC()->cart->add_fee( $discount_text, $discount, false ); } // Up to 9 items (Fixed discount at 50%) else { WC()->cart->add_fee( $discount_text, $discount2, false ); } } add_action( 'woocommerce_cart_calculate_fees','cart_progressive_discount' ); 

Естественно, это идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Этот код проверен и работает.

Здесь скидка не облагается налогом, см. В последней ссылке ниже.


Рекомендации:

  • WooCommerce – добавление стоимости доставки для бесплатного пользовательского плана
  • WooCommerce – Сделать набор купонов, добавив фиксированную плату к заказу
  • Класс WooCommerce – WC_Cart – метод add_fee ()