2

wy WooCommerce Web サイトでは、代理店および再販業者に販売する予定です。問題は、再販業者が税金を免除されているため、特定の顧客の役割に対してゼロ税率を有効にするカスタム関数が必要であることです (WooCommerce が独自に行った場合は最適ですが、そうではありません)。

したがって、私の問題は、顧客が管理者または再販業者である場合にゼロ税を計算するための変更を実装する方法がわからないことを除いて、私が持っているコードが完璧に機能することです。

私が使用しているコードは次のとおりです。

function wc_diff_rate_for_user( $tax_class, $product ) {

    if ( is_user_logged_in() && current_user_can( 'administrator' ) ) {
        $tax_class = 'Zero Rate';
    }
    return $tax_class;
}

add_filter( 'woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2 );

そのユーザーの役割に対して、このコードを変更して機能させるにはどうすればよいですか?

ありがとう

4

1 に答える 1

4

2020年アップデート

最初に現在のユーザー ロールを取得するコードに基づいて、このカスタマイズされた関数を試してください。次にin_array()、if ステートメントで php 条件付き関数を使用して、2 つのターゲット ロールを現在のユーザー ロールと比較します。このようにして、この「ゼロ レート」税クラスを有効にするかどうかを指定します。

コードは次のとおりです。

function wc_diff_rate_for_user( $tax_class, $product ) {
    // Getting the current user 
    $current_user = wp_get_current_user();
    $current_user_data = get_userdata($current_user->ID);

    if ( in_array( 'administrator', $current_user_data->roles ) || in_array( 'reseller', $current_user_data->roles ) )
        $tax_class = 'Zero Rate';

    return $tax_class;
}
add_filter( 'woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2 );

更新 - WooCommerce 3 以降では、代わりに以下を使用します。

function wc_diff_rate_for_user( $tax_class, $product ) {
    // Getting the current user 
    $current_user = wp_get_current_user();
    $current_user_data = get_userdata($current_user->ID);

    if ( in_array( 'administrator', $current_user_data->roles ) || in_array( 'reseller', $current_user_data->roles ) )
        $tax_class = 'Zero Rate';

    return $tax_class;
}
add_filter( 'woocommerce_product_get_tax_class', 'wc_diff_rate_for_user', 10, 2 );
add_filter( 'woocommerce_product_variation_get_tax_class', 'wc_diff_rate_for_user', 10, 2 );

このコードは、アクティブな子テーマ (またはテーマ) の functions.php ファイル、または任意のプラグイン ファイルにも含まれます。

このコードはテスト済みで、完全に機能します。

于 2016-10-03T19:15:06.720 に答える