Woocommerce: распознавать таможенную плату как специфическую плату за доставку

Я знаю, что могу добавить плату в корзину, используя приведенный ниже код, но она просто добавляет общую плату в корзину. Woocommerce учитывает определенные комиссионные за доставку, и мне интересно, есть ли способ сделать так, чтобы комиссионные увеличивались с помощью описанного ниже метода, что woocommerce рассматривает как специфическую комиссию за доставку. Какие-то метаданные, которые добавляются к стоимости доставки. наш API не признает эти сборы в качестве стоимости доставки и поэтому не регистрирует их, и именно это я и пытаюсь решить.

add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
  global $woocommerce;

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    $percentage = 0.01;
    $surcharge = ( $woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total ) * $percentage;    
    $woocommerce->cart->add_fee( 'Surcharge', $surcharge, true, '' );

}

1 ответ

Решение

Вы можете сделать что-то вроде этого:

add_filter( 'woocommerce_package_rates', 'woocommerce_package_rates', 10, 2 );
function woocommerce_package_rates( $rates, $package ) {

    $percentage = 0.01;

    foreach($rates as $key => $rate ) {
        $surcharge = ( wc()->cart->cart_contents_total + $rates[$key]->cost ) * $percentage;
        $rates[$key]->label .= ": {$rates[$key]->cost} + Fee: {$surcharge}";
        $rates[$key]->cost += $surcharge;
    }
    return $rates;
}

добавьте доплату к тарифам доставки. Код выше будет производить что-то вроде этого:

reigelgallarde.me

Подробнее о стоимости доставки здесь: http://reigelgallarde.me/programming/woocommerce-shipping-fee-changes-condition-met/

Другие вопросы по тегам