首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果低于最低金额的小计,不会申请优惠券。

如果低于最低金额的小计,不会申请优惠券。
EN

Stack Overflow用户
提问于 2021-04-22 10:30:47
回答 1查看 163关注 0票数 1

我有问题。我有优惠券给我15%的折扣。此外,我有至少200美元的运输方法。我注意到,如果我申请的优惠券金额为200美元,小计低于200美元,优惠券运输方法有效。我想知道一个办法,以限制智能优惠券不适用,如果小计低于200美元。

我正在尝试的代码是:

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-22 12:17:40

您的代码中有一些bug。首先,您没有将global $woocommerce;声明为函数的启动。$woocommerce->cart->applied_coupons,这将是数组,所以您必须传递键来检查hometest

代码语言:javascript
复制
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过滤器钩子删除优惠券消息。

代码语言:javascript
复制
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 );

测试和工作.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67211487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档