如果在Woocommerce中应用了任何优惠券,则删除特定状态

时间:2019-03-04 18:34:28

标签: php wordpress woocommerce checkout coupon

我一直在Google中寻找解决方案,但未找到任何解决方案。如果优惠券有效,是否可以隐藏某些状态?

我找到了与支付网关配合使用的Remove specific states of a country on Woocommerce Checkout答案代码,我正在尝试将代码修改为适用于各州:

add_filter('woocommerce_states', 'applied_coupons_hide_states', 20, 1 ); 
function applied_coupons_hide_states( $states){

    if( sizeof( WC()->cart->get_applied_coupons() ) > 0 ){

        foreach ( $states as $state_key => $state_value ) {

            if( $state_key != 'LMA,LIM' )
                unset($states[$state_key]);
        }
    }

    return $states;
}

但是我无法使其工作。我在做什么错了?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您的代码中有一些错误……我想相关的国家是秘鲁(PE)。请尝试以下操作:

add_filter('woocommerce_states', 'applied_coupons_hide_states', 10, 1 ); 
function applied_coupons_hide_states( $states){
    // On cart or checkout pages, if any coupon is applied
    if( ( is_cart() || is_checkout() ) && sizeof( WC()->cart->get_applied_coupons() ) > 0 ){
        $country = 'PE'; // Defined country: Peru
        $targered_states = array('LMA','LIM'); // States to be removed

        foreach ( $targered_states as $state_code ) {
            if( isset($states['US'][$state_code]) ) {
                unset( $states['US'][$state_code] );
            }
        }
    }
    return $states;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。

相关胎面:Remove specific states of a country on Woocommerce Checkout