Нельзя использовать доступные настройки для начисления переменной стоимости доставки, как определено:
3,50
для первого элемента 4,50
для более чем одного элемента (2 или более)
Поэтому вам нужно будет использовать следующую настраиваемую подключаемую функцию:
add_filter('woocommerce_package_rates', 'custom_shipping_costs', 10, 2 );
function custom_shipping_costs( $rates, $package ){
// Get cart items count
$items_count = WC()->cart->get_cart_contents_count();
// Your cost settings
$new_cost = $items_count > 1 ? 4.5 : 3.5;
// Loop through shipping methods rates
foreach ( $rates as $rate_key => $rate ){
$has_taxes = false;
// Targeting "Flat rate" shipping methods
if ( 'flat_rate' === $rate->method_id ) {
$default_cost = $rates[$rate_key]->cost;
$rates[$rate_key]->cost = $new_cost;
$rate_conversion = $new_cost / $default_cost;
// Taxes rate cost (if enabled)
foreach ($rates[$rate_key]->taxes as $key => $tax){
if( $tax > 0 ){
$taxes[$key] = $tax * $rate_conversion;
$has_taxes = true;
}
}
if( $has_taxes )
$rates[$rate_key]->taxes = $taxes;
}
}
return $rates;
}
Код входит в функциюФайл .php вашей активной дочерней темы (или активной темы).Протестировано и работает.
После того, как код сохранен, зайдите в настройки единой ставки и установите стоимость тарифа на 1.00
:
Теперь стоимость доставки изменится с 3.50
(для одного предмета) на 4.50
(для более чем одного предмета)