Подстановочный знак кода купона WooCommerce

У меня есть корзина с минимальным заказом 15 долларов. Однако я хочу создать несколько кодов купонов, которые позволят обойти требование минимального заказа. Мой код ниже позволяет мне назвать конкретный купон. Как использовать подстановочный знак, чтобы мне не приходилось перечислять все имеющиеся у меня коды купонов, начинающиеся с букв nm?

Вот код, который я использую:

add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
/* add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' ); */
add_action( 'woocommerce_check_cart_items' , 'wc_minimum_order_amount' );

function wc_minimum_order_amount() {
// Set this variable to specify a minimum order value
$minimum = 15;

 // No minimum purchase if a specific coupon code is used
if ( WC()->cart->has_discount ( '*nm*' ) ) {
    return;
}

if ( WC()->cart->subtotal < $minimum ) {

    if( is_cart() ) {

        wc_print_notice( 
            sprintf( 'You must have an order with a minimum of %s to place your order, your current order subtotal is %s.' , 
                wc_price( $minimum ), 
                wc_price( WC()->cart->subtotal )
            ), 'error' 
        );

    } else {

        wc_add_notice( 
            sprintf( 'You must have an order with a minimum of %s to place your order, your current order total is %s.' , 
                wc_price( $minimum ), 
                wc_price( WC()->cart->subtotal )
            ), 'error' 
        );

    }
}

}

Код, в котором я хочу использовать подстановочный знак, находится здесь (3-й абзац в приведенном выше коде):

 // No minimum purchase if a specific coupon code is used
if ( WC()->cart->has_discount ( 'nm*' ) ) {
return;
}

* не работает. Как мне это закодировать? Спасибо!!!!!


person Cindy    schedule 28.05.2018    source источник


Ответы (1)


Вы можете проверить, применен ли в корзине купон на скидку, а затем просмотреть каждый купон, если он начинается с nm.

    // No minimum purchase if a specific coupon code is used
    if ( WC()->cart->has_discount ( ) ) { // check if has discount coupons
        // loop through each coupon
        foreach ( WC()->cart->applied_coupons as $coupon ) {
            if (strpos($coupon, 'nm') === 0) {
                // coupon starts with 'nm'
                return;
            }
        }
    }
person Reigel    schedule 29.05.2018
comment
Ты спасатель, Рейгель. Ваш код работает отлично. Благодарю вас! - person Cindy; 29.05.2018
comment
Рад, что смог помочь. Я был бы признателен, если бы вы могли принять ответ и проголосовать. Ваше здоровье! @Синди - person Reigel; 29.05.2018