2013-07-25 53 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); 
    } 
} 

これは、フロントエンドで動作しているようだが、バックエンドを壊す:

誰かがこのコードを掲載しました。 http://i.imgur.com/nNHMSAZ.png(これはちょうど新しいchromeエラーページですか?)

私が理解できなかったもう一つのことは、2つの役割を追加する方法です。これは、私が管理領域に戻ってfunctions.phpに追加した後、ただ1つの代わりに。

ありがとうございました

答えて

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

関連する問題