2013-07-25 4 views
6

나는 도매업자 또는 디자이너의 역할을 가진 사용자가 자동으로 세금 면제가되고 카트/체크 아웃에서 세금이 사라지도록 woocommerce 상점을 설정하려고합니다. 다양한 가격에 다양한 가격을 제공하기 위해 동적 가격 플러그인을 사용했지만 세금 변동에 대한 옵션은 없습니다.woocommerce에서 역할 기반 세금

// Place the following code in your theme's functions.php file and replace tax_exempt_role with the name of the role to apply to 
add_action('init', 'woocommerce_customer_tax_exempt'); 
function woocommerce_customer_tax_exempt() { 
    global $woocommerce; 
    if (is_user_logged_in()) { 
     $tax_exempt = current_user_can('tax_exempt_role'); 
     $woocommerce->customer->set_is_vat_exempt($tax_exempt); 
    } 
} 

이 프런트 엔드에 동작하는 것 같지만 백엔드를 나누기 :

누군가가이 코드를 기록했다. admin 영역으로 돌아가 이것을보고 functions.php에 추가 한 후 http://i.imgur.com/nNHMSAZ.png (그냥 새로운 크롬 오류 페이지입니까?)

내가 알아 내지 못했던 다른 하나는 두 가지 역할을 추가하는 방법입니다. 단지 하나가 아닌.

감사합니다.

답변

8

다음은 "도매상"사용자 역할을 위해 저에게 도움이되었습니다. functions.php에 추가되었습니다.

add_filter('woocommerce_before_checkout_billing_form', 'prevent_wholesaler_taxes'); 

function prevent_wholesaler_taxes() { 

    global $woocommerce; 

    if(current_user_can('wholesaler')) { 

       $woocommerce->customer->set_is_vat_exempt(true); 

     } else { 

       $woocommerce->customer->set_is_vat_exempt(false); 
     } 
} //end prevent_wholesaler_taxes 

여러 사용자 역할을 추가하려면 current_user_can(); 기능을 추가하기 만하면됩니다. 나는이 작업을 수 있다고 생각 :

if(current_user_can('wholesaler')||current_user_can('another_user_role')) 
2

내가 'woocommerce_before_checkout_billing_form'를 사용하는 경우, 업데이트하거나 먼저 체크 아웃 페이지를 새로 고침 할 필요가 있음을 발견, 당신은 그것을을 적용하려면 장바구니 페이지를 새로 고침해야합니다.

먼저 체크 아웃 페이지를 새로 고치지 않고 적용하려면 비과세 이러한 행동 후크, 'woocommerce_before_cart_contents''woocommerce_before_shipping_calculator'를 사용합니다.

참고 : 위와 동일한 콜백 기능 코드를 사용하십시오.

+0

사람들이 양식을 위에서 아래로 채우는 것은 맞지만 문제는 삽입 한 사용자 정의 필드가 AJAX 호출이 주소 입력과 같은 방식으로 카트 합계를 다시 계산하지 않는다는 것입니다. 그리고 (놀랍게도) 마지막 "Place Order"클릭이 재 계산을 트리거하는 것으로 보이지 않습니다. 논리적으로 페이지를 아래로 진행하는 사용자에게 의존하면 약간 위험합니다. – richplane