2017-12-13 17 views
2

ユーザーが初めて注文する場合、税額が計算される前にカート小計に割引を適用する必要があります。ただし、税はWooCommerceのアイテムごとに計算され、その後は小計に加算されます。 したがって、WooCommerceが税金を計算する前にカート内のアイテムに割引を適用する必要があります。このように、税金は元の価格ではなく割引価格に基づいています。ここでWooCommerceで税別を除外したカート内容合計に割引を適用

は私が持っているものです。

function first_order_add_five_percent_discount($cart_object) { 

    if (is_user_logged_in()) { 
     //current user id 
     $currentUser_id = get_current_user_id(); 
     //amount of orders by current user 
     $orderAmount = wc_get_customer_order_count($currentUser_id); 

     //if user has 0 orders... 
     if ($orderAmount == 0) { 
      //for each item in cart 
      foreach ($cart_object->get_cart() as $item_values) { 

       //$item_id = $item_values['data']->id; // Product ID 
       $item_qty = $item_values['quantity']; // Item quantity 
       $original_price = $item_values['data']->price; // Product original price 
       echo $original_price . "<br>"; 
       $totalPrice = $original_price * $item_qty; 
       $discountedPrice = $totalPrice * .05; 
       $newPrice = $original_price - $discountedPrice; 
       echo $totalPrice . "<br>"; 
       echo $discountedPrice . "<br>"; 
       echo $newPrice . "<br>"; 
       $item_values['data']->set_price($newPrice); 

      } 

     } else { 
      //do nothing 
     } 
    } 
} 

add_action('woocommerce_before_calculate_totals', 'first_order_add_five_percent_discount'); 

これは私が必要とする右の数字をエコー表示が、今私はカートにそれらの価格を適用する必要があります。今、カートの価格は変わらない。

この機能の計算による新しい価格をカートにどのように適用できますか?

答えて

2

もっと簡単な方法がありますが、負の料金を使用するのは、だから、割引です。

add_action('woocommerce_cart_calculate_fees','new_customers_discount', 10, 1); 
function new_customers_discount($wc_cart) { 
    if (is_admin() && ! defined('DOING_AJAX')) return; // We exit 

    // Only for logged in users 
    if (! is_user_logged_in()) return; // We exit 

    // Only for new customers without orders 
    if (wc_get_customer_order_count(get_current_user_id()) != 0) return; // We exit 

    // discount percentage 
    $percent = 5; 

    // Calculation 
    $discount = $wc_cart->cart_contents_total * $percent/100; 

    // Add the fee (TAX third argument is disabled: false) 
    $wc_cart->add_fee(__('Discount', 'woocommerce')." ($percent%)", -$discount, false); 
} 

コードは、任意のプラグインファイルでも、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルに行くか:それはあなたが税を無効にすることができWC_Cart方法add_fee()を使用しています。

テスト済みです。あなたは割引がカートの内容総抜きのメイドである見ることができるように

enter image description here

:あなたはそのような何かを取得します。税金

+1

遅れて申し訳ありませんが、別の奇妙な税金関連の問題に取り組んでいました。しかし、はい、これは正しいです!割引が適用された後、税金が計算されます。完璧な感謝です。 –

関連する問題