В настоящее время я работаю над интернет-магазином с WooCommerce. Я столкнулся с проблемой, что хочу предоставить скидку клиентам, которые выбрали конкретный метод доставки. Скидка составляет 0,50 для каждого отдельного продукта. Я в принципе решить эту проблему с помощью следующего кода в моем "functions.php„:обновление woocommerce cart после смены способа доставки
add_action('woocommerce_before_calculate_totals', 'woo_add_cart_fee');
function woo_add_cart_fee() {
global $woocommerce;
$cart = $woocommerce->cart->get_cart();
//Calculating Quantity
foreach ($cart as $cart_val => $cid) {
$qty += $cid['quantity'];
}
if ($woocommerce->cart->shipping_label == "specific shipping method") {
$woo_fee = $qty * (-0.5);
$woo_name = "discount for specific shipping method";
}
$woocommerce->cart->add_fee(__($woo_name, 'woocommerce'), $woo_fee, true);
}
код технически работает, единственная проблема у меня сейчас является то, что если клиент изменяет способ доставки т.е. от“ (без какой-либо скидки) или наоборот, он всегда отображает и вычисляет значение скидки из ранее выбранного способа доставки. Другими словами, это всегда один шаг назад, и, следовательно, отображает клиента в общей сумме.
У кого-нибудь есть идея решить эту проблему?