2017-11-19 10 views
1

woocommerceチェックアウトページでカスタム%値を追加したいが、スイスの国のみに表示し、他の人には表示しない。今私はそれのために働く正しいコードを持っているが、問題は、ユーザーがスイスを選択したときにそれを表示することができないということです。ここでは、コードがあるので、ここで私はImが間違っているのか見て助けてくださいwoocommerceチェックアウト時にカスタム税額を追加する

//Add tax for CH country 
add_action('woocommerce_cart_calculate_fees','woocommerce_custom_surcharge'); 
function woocommerce_custom_surcharge() { 
global $woocommerce; 

if (WC()->customer->get_shipping_country('CH')) 
    return; 

    $percentage = 0.08; 
    $taxes = array_sum($woocommerce->cart->taxes); 
    $surcharge = ($woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total) * $percentage; 
    // Make sure that you return false here. We can't double tax people! 
    $woocommerce->cart->add_fee('TAX', $surcharge, false, ''); 

} 

イム確認イムは、ここで間違って内部やって:ヘルプ

答えて

1

ため

if (WC()->customer->get_shipping_country('CH')) 

おかげWC_Customerget_shipping_country()を国番号を取得すると国コードを受け付けません。そのため、コード条件で別の設定をする必要があります。

あなたのフック関数は引数として、既にWC_Cartオブジェクトを持っているとしても、あなたがグローバル$woocommerce$woocommerce->cartを必要としない...

だからあなたの再訪コードは次のようになります。

// Add tax for Swiss country 
add_action('woocommerce_cart_calculate_fees','custom_tax_surcharge_for_swiss', 10, 1); 
function custom_tax_surcharge_for_swiss($cart) { 
    if (is_admin() && ! defined('DOING_AJAX')) return; 

    // Only for Swiss country (if not we exit) 
    if ('CH' != WC()->customer->get_shipping_country()) return; 

    $percent = 8; 
    # $taxes = array_sum($cart->taxes); // <=== This is not used in your function 

    // Calculation 
    $surcharge = ($cart->cart_contents_total + $cart->shipping_total) * $percent/100; 

    // Add the fee (tax third argument disabled: false) 
    $cart->add_fee(__('TAX', 'woocommerce')." ($percent%)", $surcharge, false); 
} 

コードは、関数で行きます。あなたのアクティブな子テーマ(またはテーマ)の、または任意のプラグインファイルのphpファイル。

はあなたのようなものでしょう...テストおよび動作します:あなたはより良い設定でデフォルトWooCommerce税の機能を使用する必要があり、

enter image description here

しかし、税の


を>税(タブ)
、各国の税率を設定できるのは...

+0

コードのおかげでうまくいった –

関連する問題