Я пытаюсь применить скидку к одному классу доставки для продуктов, которые в настоящее время находятся в корзине. Это применяется к просмотру оформления заказа.
В бэкэнде Woocommerce опция настроена на индивидуальную оплату каждого класса доставки. Кроме того, я использую только один способ доставки - "фиксированная ставка".
На основании Переопределить все расходы по доставке для определенного класса доставки в Woocommerce следующий код, который должен применить скидку:
add_filter('woocommerce_package_rates', 'shipping_class_null_shipping_costs', 10, 2);
function shipping_class_null_shipping_costs( $rates, $package ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return $rates;
$shipping_class_slug = 'large'; // Your shipping class slug
$found = false;
// Loop through cart items and checking for the specific defined shipping class
foreach( $package['contents'] as $cart_item ) {
if( $cart_item['data']->get_shipping_class() == $shipping_class_slug )
$found = true;
}
$percentage = 50; // 50%
$subtotal = WC()->cart->get_cart_shipping_total();
// Set shipping costs to 50% discount if shipping class is found
if( $found ){
foreach ( $rates as $rate_key => $rate ){
$has_taxes = false;
// Targetting "flat rate"
if( 'flat_rate' === $rate->method_id ){
$rates[$rate_key]->cost = $subtotal;
}
}
}
return $rates;
}
Но что бы я ни попробовал, расчетный результат доставки - 0 долларов.
Что я здесь делаю не так и как правильно применить скидку к классу доставки?
Спасибо.