• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Решено Минимальная сумма заказа для определенной категории

red89rus

Новичок
#1
Здравствуйте. Нужно написать такой скрипт: если в корзине присутствует товар определенной категории то выставляется минимальная сумма заказа. Вставляю в functions.php этот код:
PHP:
add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );
function wc_minimum_order_amount() {
    // Set this variable to specify a minimum order value
    $minimum = 50;

    if ( WC()->cart->total < $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 total is %s.' ,
                    woocommerce_price( $minimum ),
                    woocommerce_price( WC()->cart->total )
                ), '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.' ,
                    woocommerce_price( $minimum ),
                    woocommerce_price( WC()->cart->total )
                ), 'error'
            );

        }
    }

}
Подскажите, как задать условие, чтобы проверялась принадлежность товара к категории...
 

red89rus

Новичок
#2
Решение найдено. Для всех кто интересуется:
PHP:
// Выводит ошибку, если присутствует товар из определенной категории
// с суммой заказа меньше 500 р.
add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );
function wc_minimum_order_amount() {
    // Минимальная сумма заказа
    $minimum = 500;

    if ( WC()->cart->total < $minimum ) {
    // Построение массива
        $draught_links = array();
    foreach(WC()->cart->get_cart() as $cart_item_key => $values ) {
        $_product = $values['data'];
        $terms = get_the_terms( $_product->id, 'product_cat' );
        foreach ($terms as $term) {
            $draught_links[] = $term->name;
        }  
    }
    // Проверка присутствия нужного товара
    if (in_array("название категории", $draught_links)){
        $on_draught = true;
    }else{
        $on_draught = false;
    }
    // Проверка корзины
        if( is_cart() ) {
        if($on_draught)  {
            wc_print_notice(
                sprintf( 'You must have an order with a minimum of %s to place your order, your current order total is %s.' ,
                    woocommerce_price( $minimum ),
                    woocommerce_price( WC()->cart->total )
                ), 'error'
            );
        }
        } else {
         if($on_draught) {
            wc_add_notice(
                sprintf( 'You must have an order with a minimum of %s to place your order, your current order total is %s.' ,
                    woocommerce_price( $minimum ),
                    woocommerce_price( WC()->cart->total )
                ), 'error'
            );
         }
        }
    }

}
 

Ahazhgir

Новичок
#3
Подскажите как установить разную минимальную сумму заказа для разных категорий товаров