Дополнительная плата за корзину в зависимости от роли пользователя или пользовательских данных в WooCommerce - PullRequest
1 голос
/ 04 апреля 2019

Я ищу способ добавить дополнительную корзину / налог для определенной роли пользователя в WooCommerce.Я использую плагин WooCommerce PDF Invoices & Packings Slips .Эту плату следует как минимум добавить к электронному письму, которое отправляется пользователю, и в счет-фактуру в формате PDF, который отправляется вместе с ним.

Я взглянул на следующий код и подумал, что могу его использовать.Я только не понимаю, как я могу добавить различные «налоговые классы» к продуктам.Так что теперь происходит то, что налог не добавляется вообще.

 add_filter( 'woocommerce_before_cart_contents', 'wc_diff_rate_for_user', 1, 2 );
 add_filter( 'woocommerce_before_shipping_calculator', 'wc_diff_rate_for_user', 1, 2);
 add_filter( 'woocommerce_before_checkout_billing_form', 'wc_diff_rate_for_user', 1, 2 );
 add_filter( 'woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2 );
 function wc_diff_rate_for_user( $tax_class ) {

if ( !is_user_logged_in() || current_user_can( 'customer' ) ) {
    $tax_class = 'Zero Rate';
}
return $tax_class;
}

Надеюсь, кто-нибудь может мне помочь.

1 Ответ

1 голос
/ 04 апреля 2019

Обновлено: Код, который вы используете, устарел и не нужен для этого.Попробуйте следующий пример, который добавит процентную плату в зависимости от роли пользователя:

add_action( 'woocommerce_cart_calculate_fees', 'custom_percentage_fee', 20, 1 );
function custom_percentage_fee( $cart ) {
    if ( ( is_admin() && ! defined( 'DOING_AJAX' ) )  )
        return;

    // Get current WP_User Object
    $user = wp_get_current_user();

    // For "customer" user role
    if ( in_array( 'customer', $user->roles ) ) {
        $percent = 5; // <== HERE set the percentage
        $cart->add_fee( __( 'Fee', 'woocommerce')." ($percent%)", ($cart->get_subtotal() * $percent / 100), true );
    }
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Проверено и работает.

...