Woocommerc如果购物车中的两个产品定价

时间:2016-10-14 18:00:30

标签: php wordpress function woocommerce

当购物车的数量是2的倍数时,我试图为购物车的总价格增加折扣;我已经制定了一些代码,只允许每种产品中的一种,我计划生产9种产品。

目前价格为17美元/产品;如果用户添加两个产品,则总数应为30美元,这应该反映在2个数量的每个倍数(意味着有3个产品,价格是47美元,但是4个,它是60美元)。

以下是我的代码。出于某种原因,当我在购物车中有一个产品时,它将总数设置为30美元。

function custom_price_function( $total, $cart ) {
    //if( $cart->cart_contents_count = 2 && $cart->cart_contents_count >= 80 )
    if( $cart->cart_contents_count = 2 )
        $total = 30;
    return $total;
}
add_filter( 'woocommerce_calculated_total', 'custom_price_function', 10, 2 );

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

function calculate_total($total, $cart) {

    if($cart->cart_contents_count == 1){
        return $total;
    }
    $to_discount = 0;
    for($x = 0; $x <= $cart->cart_contents_count; $x ++){
        if($x % 2 === 0){
            $to_discount += 2;
        }

        if($cart->cart_contents_count == $x && $x % 2 === 0){
            $to_discount += 2;
        }
    }

    return $new_price - $to_discount;;
}   
add_filter( 'woocommerce_calculated_total', 'calculate_total', 10, 2 );

我们所做的是根据购物车中商品的总数来计算。你可以将它扩展为更具动态性。但它完成了你现在所需要的东西

简单测试:

for($x = 1; $x < 10; $x++ ){
    echo calculate_total(17 * $x, $x) . "\n";
}

输出:

17
30
47
62
79
94
111
126
143