Php Woocommerce:产品附加价格不适用优惠券折扣

Php Woocommerce:产品附加价格不适用优惠券折扣,php,woocommerce,Php,Woocommerce,我有一个相当不寻常的问题 在一个同样使用Woocommerce预订和Woocommerce产品附加组件插件的Woocommerce中,我想设置仅适用于基本产品价格而不适用于附加组件的优惠券 例如,如果我的基本可预订产品的成本为100美元,并且用户选择了一个成本为20美元的附加组件,并应用了一个提供10%折扣的优惠券,那么我希望折扣为10美元,而不是12美元 我在functions.php中编写了以下代码,但由于某些原因,最终价格正在重新计算,它显示的不是所需的110美元,而是108美元,并且向银

我有一个相当不寻常的问题

在一个同样使用Woocommerce预订和Woocommerce产品附加组件插件的Woocommerce中,我想设置仅适用于基本产品价格而不适用于附加组件的优惠券

例如,如果我的基本可预订产品的成本为100美元,并且用户选择了一个成本为20美元的附加组件,并应用了一个提供10%折扣的优惠券,那么我希望折扣为10美元,而不是12美元

我在functions.php中编写了以下代码,但由于某些原因,最终价格正在重新计算,它显示的不是所需的110美元,而是108美元,并且向银行发送了错误的号码

add_action( 'woocommerce_calculate_totals', 'CouponIgnoreAddons' );
function CouponIgnoreAddons($cart_object) {  
    global $woocommerce;
    if (isset($cart_object->applied_coupons) && $cart_object->applied_coupons[0] != "") {
        $coupon_code = $cart_object->applied_coupons[0];
        $c = new WC_Coupon($coupon_code);
        $new_total = 0;
        $new_subtotal = 0;
        $coupon_discount_totals = 0;
        foreach ($cart_object->cart_contents as $cart_item_key => $cart_item ) {
            if ($c->discount_type == 'percent') {
                $new_total += $cart_item['addons_price_before_calc'] - ($cart_item['addons_price_before_calc'] * $c->amount / 100) + $cart_item['addons'][0]['price'] + $cart_item['addons'][1]['price'];
                $new_subtotal += $cart_item['addons_price_before_calc'] + $cart_item['addons'][0]['price'] + $cart_item['addons'][1]['price'];
                $coupon_discount_totals += ($cart_item['addons_price_before_calc'] * $c->amount / 100);
            }
        }
        $cart_object->coupon_discount_totals[$coupon_code] = $coupon_discount_totals;
        $cart_object->discount_total = $coupon_discount_totals; 
        $cart_object->set_total('discounts_total',$coupon_discount_totals);
        $cart_object->set_discount_total($coupon_discount_totals);
        $cart_object->cart_contents_total = $new_total;
    }
}
我有外接程序[0]和[1],因为这些外接程序是标准的,并且它们的数量是2

有人有不同的想法或想法吗

多谢各位