【发布时间】:2021-12-04 20:22:12
【问题描述】:
我正在尝试仅为使用特定类型优惠券的客户启用货到付款 (COD)。
我有一个现有代码,当输入某种类型的优惠券时,它会将产品销售价格转换为常规产品价格。
现在我想补充一点,货到付款 (COD) 仅适用于同一功能中的有效优惠券。
我尝试添加的部分是这样的:
if ($coupons = WC()->cart->get_applied_coupons() == False )
unset( $available_gateways['cod'] );
导致:
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 10, 1);
function add_custom_price( $cart_object) {
global $woocommerce;
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$coupon = False;
if ($coupons = WC()->cart->get_applied_coupons() == False )
unset( $available_gateways['cod'] );
if ($coupons = WC()->cart->get_applied_coupons() == False )
$coupon = False;
else {
foreach ( WC()->cart->get_applied_coupons() as $code ) {
$coupons1 = new WC_Coupon( $code );
if ($coupons1->type == 'percent_product' || $coupons1->type == 'percent')
$coupon = True;
}
}
if ($coupon == True)
foreach ( $cart_object->get_cart() as $cart_item )
{
$price = $cart_item['data']->regular_price;
$cart_item['data']->set_price( $price );
}
}
这不会给出真正的错误消息,但也肯定不是预期的结果。有什么建议吗?
【问题讨论】:
标签: php wordpress woocommerce payment-gateway coupon