我目前正在使用 WooCommerce 开设在线商店。我遇到了一个问题,我想为选择特定运输方式的客户提供折扣。每件产品的折扣为 0.50。我基本上用我的“ functions.php ”中的以下代码解决了这个问题:
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);
}
该代码在技术上有效,我现在唯一的问题是,如果客户更改运输方式,即从“特定运输方式”更改为“正常运输方式”(没有任何折扣)或相反,它总是显示和计算先前选择的运输方式的折扣值。换句话说,它总是后退一步,因此向客户显示错误的总金额。
有没有人有解决这个问题的想法?