通过优惠券为非折扣商品添加自定义捆绑购物车折扣

时间:2017-09-07 18:59:20

标签: php wordpress woocommerce cart discount

我有Woocommerce购物车,我成功添加了"捆绑"如果购物车数量为5或更多,折扣允许购物车中每件商品减$ 7。

我还希望为某些产品启用优惠券。但是我不想把我的捆绑折扣和优惠券折扣叠加在一起。

以下是我目前添加捆绑折扣的方式:

add_action( 'woocommerce_cart_calculate_fees','wc_cart_quantity_discount', 10, 1 );
function wc_cart_quantity_discount( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
    return;

$discount = 0;
$cart_item_count = $cart_object->get_cart_contents_count();

if( $cart_item_count > 4 )
    $percent = 25;


$discount -= $cart_object->get_cart_contents_count() * 7;

if( $percent > 0 )
    $cart_object->add_fee( __( "Bundle discount", "woocommerce" ), $discount, true);
}   

例如:
我的购物车中有5件商品,其中1件商品已打折,优惠券可享受35%的折扣 有没有办法通过应用优惠券仅对4个非打折商品保持捆绑折扣?

  

我不想减少7美元的折扣加35%的折扣。我只希望优惠券具有优先权,如果它被应用而不会失去我的其他4个项目的折扣。

1 个答案:

答案 0 :(得分:2)

这是一个隐藏的功能代码,当至少有5个项目时,会为每个非折扣购物车商品添加 {strong> $7 购物车:

add_action( 'woocommerce_cart_calculate_fees','wc_cart_quantity_discount', 10, 1 );
function wc_cart_quantity_discount( $cart_object ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    $cart_total_count = $cart_object->get_cart_contents_count();
    $cart_items_count = 0;

    // Counting non discounted cart items (by a coupon discount)
    foreach( $cart_object->get_cart() as $cart_item_key => $cart_item )
        if( $cart_item['line_subtotal'] == $cart_item['line_total'] )
            $cart_items_count += $cart_item['quantity']; 

    if( $cart_total_count > 4 ){
        $discount = $cart_items_count * 7;
        $cart_object->add_fee( __( "Bundle discount", "woocommerce" ), -$discount, true);
    }
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

此代码经过测试并有效。