Как сделать так, чтобы пользовательская плата за тележку облагалась налогом в WooCommerce

Я нашел именно тот фрагмент, который искал, чтобы добавить фиксированную сумму комиссии к каждому отдельному элементу корзины независимо от цены. На этом сайте продаются шины. Таким образом, за каждую шину взимается 3 доллара.

Вот код, который я использую и работает:

add_action('woocommerce_cart_calculate_fees', function() {
    if (is_admin() && !defined('DOING_AJAX')) {
        return;
    }

    $feetot = WC()->cart->get_cart_contents_count();

    WC()->cart->add_fee(__('Specific Duty on New Tires', 'txtdomain'), 3 * $feetot);
});

Я не очень хорошо владею PHP и учусь на ходу. Я потратил 3 часа, пытаясь изменить этот код так, чтобы сбор в размере 3 доллара также облагался налогом. Но я не мог этого понять.

Ниже показано, что я пробовал в качестве одной из попыток обложить налогом и комиссию, но это не сработало:

add_action('woocommerce_cart_calculate_fees', function() {
    if (is_admin() && !defined('DOING_AJAX')) {
        return;
    }
    
    $feetot = WC()->cart->get_cart_contents_count();

    WC()->cart->add_fee(__('Specific Duty on New Tires', 'txtdomain', $taxable = true, $tax_class = ''), 3 * $feetot);
});

Что я делаю не так? Любая помощь, пожалуйста.


person TinoV    schedule 11.11.2020    source источник


Ответы (1)


Чтобы он заработал, замените в своем коде строку:

WC()->cart->add_fee(__('Specific Duty on New Tires', 'txtdomain', $taxable = true, $tax_class = ''), 3 * $feetot);

со следующей строкой кода (см. _ 2_ add_fee() метод):

WC()->cart->add_fee( __('Specific Duty on New Tires', 'text_domain'), $feetot * 3, true, '' );

Итак, ваш правильный код функции перехвата будет:

add_action('woocommerce_cart_calculate_fees', 'custom_cart_items_fee' );
function custom_cart_items_fee( $cart ) {
    if ( is_admin() && ! defined('DOING_AJAX') ) {
        return;
    }

    $fee_amount = $cart->get_cart_contents_count() * 3;

    $cart->add_fee( __('Specific Duty on New Tires', 'text_domain'), $fee_amount, true, '' );
}

Код находится в файле functions.php активной дочерней темы (или активной темы). Должно сработать.

person LoicTheAztec    schedule 11.11.2020
comment
Это сработало, большое спасибо, оценили. теперь облагается налогом! - person TinoV; 11.11.2020