Условная прогрессивная процентная скидка на основе количества товаров в Woocommerce

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

Например:

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

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

Любая идея? Как мне это сделать?

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

Благодарю.

3

Решение

Обновление — октябрь 2018 (код улучшен)

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

Расчет:
— Количество товаров основано на количестве товаров и количестве товаров в корзине.
— Процент составляет 0,05 (5%), и он увеличивается с каждым дополнительным элементом (как вы просили)
— Мы используем дисконтированный промежуточный итог (чтобы не добавлять многократные скидки на купоны)

Код:

add_action( 'woocommerce_cart_calculate_fees', 'cart_progressive_discount', 50, 1 );
function cart_progressive_discount( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

// For 1 item (quantity 1) we EXIT;
if( $cart->get_cart_contents_count() == 1 )
return;

## ------ Settings below ------- ##

$percent = 5; // Percent rate: Progressive discount by steps of 5%
$max_percentage = 50; // 50% (so for 10 items as 5 x 10 = 50)
$discount_text = __( 'Quantity discount', 'woocommerce' ); // Discount Text

## ----- ----- ----- ----- ----- ##

$cart_items_count = $cart->get_cart_contents_count();
$cart_lines_total = $cart->get_subtotal() - $cart->get_discount_total();

// Dynamic percentage calculation
$percentage = $percent * ($cart_items_count - 1);

// Progressive discount from 5% to 45% (Between 2 and 10 items)
if( $percentage < $max_percentage ) {
$discount_text .=  ' (' . $percentage . '%)';
$discount = $cart_lines_total * $percentage / 100;
$cart->add_fee( $discount_text, -$discount );
}
// Fixed discount at 50% (11 items and more)
else {
$discount_text .=  ' (' . $max_percentage . '%)';
$discount = $cart_lines_total * $max_percentage / 100;
$cart->add_fee( $discount_text, -$discount );
}
}

Код помещается в файл function.php вашей активной дочерней темы. Проверено и работает.

При использовании FEE API для скидок (отрицательная плата) всегда применяются налоги.


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

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]