我有问题。我有优惠券给我15%的折扣。此外,我有至少200美元的运输方法。我注意到,如果我申请的优惠券金额为200美元,小计低于200美元,优惠券运输方法有效。我想知道一个办法,以限制智能优惠券不适用,如果小计低于200美元。
我正在尝试的代码是:
add_action( 'woocommerce_before_cart' , 'home_test_coupon_fix' );
add_action( 'woocommerce_before_checkout_form' , 'home_test_coupon_fix' );
function home_test_coupon_fix() {
$cart_total = WC()->cart->get_subtotal();
$coupon_id = 'hometest';
$minimum_amount = 200 + WC()->cart->get_coupon_discount_amount( 'hometest' );
$currency_code = get_woocommerce_currency();
wc_clear_notices();
echo $minimum_amount;
if ( $cart_total < $minimum_amount && $woocommerce->cart->applied_coupons === $coupon_id ) {
WC()->cart->remove_coupon( 'hometest' );
wc_print_notice( "Get 50% off if you spend more than $minimum_amount $currency_code!", 'notice' );
}
wc_clear_notices();
}发布于 2021-04-22 12:17:40
您的代码中有一些bug。首先,您没有将global $woocommerce;声明为函数的启动。$woocommerce->cart->applied_coupons,这将是数组,所以您必须传递键来检查hometest
add_action( 'woocommerce_before_cart' , 'home_test_coupon_fix' );
add_action( 'woocommerce_before_checkout_form' , 'home_test_coupon_fix' );
function home_test_coupon_fix() {
global $woocommerce;
$cart_total = WC()->cart->get_subtotal();
$coupon_id = 'hometest';
$minimum_amount = 500 + WC()->cart->get_coupon_discount_amount( $coupon_id );
$currency_code = get_woocommerce_currency();
wc_clear_notices();
if ( $cart_total < $minimum_amount && $woocommerce->cart->applied_coupons[0] === $coupon_id ) {
WC()->cart->remove_coupon( 'hometest' );
wc_print_notice( "Get 50% off if you spend more than $minimum_amount $currency_code!", 'notice' );
}
wc_clear_notices();
}按OP请求更新
您可以使用woocommerce_coupon_message过滤器钩子删除优惠券消息。
function remove_coupon_message( $msg, $msg_code, $this ){
global $woocommerce;
$cart_total = WC()->cart->get_subtotal();
$coupon_id = 'hometest';
$minimum_amount = 500 + WC()->cart->get_coupon_discount_amount( $coupon_id );
$currency_code = get_woocommerce_currency();
wc_clear_notices();
if ( $cart_total <= $minimum_amount && $woocommerce->cart->applied_coupons[0] === $coupon_id ) {
return "";
}
return $msg;
}
add_filter('woocommerce_coupon_message','remove_coupon_message', 10,3 );测试和工作.

https://stackoverflow.com/questions/67211487
复制相似问题