2016-10-14 11 views
0

カートの数量が2の倍数である場合、カートの合計価格に割引を追加しようとしています。私は各製品の1つの量だけを許可し、9つの製品を持つことを予定しているコードを用意しています。カートの中の2つの商品がセット価格の場合

今の価格は$ 17/productです。ユーザーが2つの製品を追加する場合、合計は30ドルで、2つの数量の倍数に反映されるはずです(3つの製品では、価格は47ドルですが、4では60ドルです)。

以下は私のコードです。何らかの理由で私がカートに1つの製品を持っていれば合計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

このような何か作業をする必要があります:

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 
+0

おかげで、これは素晴らしいです。私はカートに2の製品があるときにはまだ短いことに気付いた(例えば、2製品= 32、30ではなく、4製品= 64、60ではない)。私はそれ($ single_price - (2 * $ cart-> cart_contents_count) 'のような主に' $ single_price - 2' if文)で遊んでみましたが、それは正しくできませんでした。 – VCP

+0

たぶん私は何かを見落としました.. heheをチェックさせてください – jycr753

+0

@VCPは今更新されました...:D – jycr753

関連する問題