2017-11-19 20 views
1

woocommerce 체크 아웃 페이지에서 사용자 정의 % 값을 추가하고 싶지만 스위스 국가에만 표시하고 다른 사용자에게는 보이지 않게하고 싶습니다. 지금 나는 올바른 코드를 가지고 있지만 문제는 사용자가 스위스를 선택할 때 그것을 보여줄 수 없다는 것입니다. 여기 코드가 그렇게 나에게 임 잘못 여기서 뭘보고 도와주세요입니다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, ''); 

} 

임 있는지 임은 내부 여기 잘못하고 : 도움을

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

감사

답변

1

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

감사합니다. –