基于Woocommerce购物车项目计数的条件累进百分比折扣

时间:2016-09-05 19:06:20

标签: php wordpress woocommerce cart discount

我希望根据购物车中的商品数量获得有条件累进折扣。将2个产品添加到购物车后,您将获得折扣。您添加的产品越多,折扣越多。

例如:

  • 1个产品 - 全价(无折扣)
  • 2件商品 - 全价,合并价格5%折扣
  • 3种产品 - 全价,合并价格10%折扣
  • 4种产品 - 全价,合并价格15%折扣
  • 依此类推......

我在互联网上搜索没有任何成功。在搜索折扣时,我只是依靠WooCommerce优惠券功能,或者我得到了一些错误的代码......

有什么想法吗?我该怎么办?

有可能吗?

感谢。

1 个答案:

答案 0 :(得分:7)

  

更新 - 2018年10月(代码改进)

是的,可以使用技巧来实现这一目标。通常我们在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进行折扣(负费用)时,始终会征税。

<强>参考文献: