Чтобы получить стоимость по отдельной позиции в корзине, требуется следующее:
1) В настройках WooCommerce> Доставка: установите стоимость 10 для ваших методов доставки "Единый тариф" (исохранить) .
2) Добавить в functions.php
файл вашей активной дочерней темы (или активной темы) , этот код:
add_filter( 'woocommerce_package_rates', 'shipping_cost_based_on_number_of_items', 10, 2 );
function shipping_cost_based_on_number_of_items( $rates, $package ) {
$numer_of_items = (int) sizeof($package['contents']);
// Loop through shipping rates
foreach ( $rates as $rate_key => $rate ){
// Targetting "Flat rate" shipping method
if( 'flat_rate' === $rate->method_id ) {
$has_taxes = false;
// Set the new cost
$rates[$rate_key]->cost = $rate->cost * $numer_of_items;
// Taxes rate cost (if enabled)
foreach ($rates[$rate_key]->taxes as $key => $tax){
if( $tax > 0 ){
// New tax calculated cost
$taxes[$key] = $tax * $numer_of_items;
$has_taxes = true;
}
}
// Set new taxes cost
if( $has_taxes )
$rates[$rate_key]->taxes = $taxes;
}
}
return $rates;
}
Обновите кэши доставки: (обязательно)
- Этот код уже сохранен в файле function.php вашей активной темы.
- Корзина пуста
- В настройках зоны доставки отключите / сохраните любой способ доставки, затем включите обратно / сохраните.
Проверено и работает.