• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

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

dim70

Опытный
Здравствуйте.
Подскажите как сделать минимальную сумма заказа для разных категорий товара?
 

Useer72

Опытный
Местный
судя из описания, там можно установить минимум максимум на корзину, а не на категорию
 

dim70

Опытный
судя из описания, там можно установить минимум максимум на корзину, а не на категорию[/QUO
почитал внимательнее и увидел что речь идёт не о сумме а о количестве:
количество.JPG
количкство 2.JPG
может у Вас есть простое решение и для этой задачи?
 

Useer72

Опытный
Местный
может у Вас есть простое решение и для этой задачи?
ну на общую сумму заказа действительно легко сделать "минималку", а вот по категориям разделить уже ни разу не просто)
 
Последнее редактирование:

dim70

Опытный
ну на общую сумму заказа действительно легко сделать "минималку", а вот по категориям разделить уже ни разу не просто)
Спасибо за участие. Я нашёл вот такой код здесь но он не работает, быть может увидев код Вы сможете его подправить, чтобы он работал на последней версии woocommerce
 

ADv

Гуру
Местный
Спасибо за участие. Я нашёл вот такой код здесь но он не работает, быть может увидев код Вы сможете его подправить, чтобы он работал на последней версии woocommerce
Попробуйте использовать вместо
PHP:
add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );

вот это
PHP:
add_action( 'woocommerce_check_cart_items', 'wc_minimum_order_amount' );
 

dim70

Опытный
Попробуйте использовать вместо
PHP:
add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );

вот это
PHP:
add_action( 'woocommerce_check_cart_items', 'wc_minimum_order_amount' );

Я попробовал предложенную Вами замену. У меня получился вот такой код:

PHP:
// Выводит ошибку, если присутствует товар из определенной категории
// с суммой заказа меньше 500 р.
add_action( 'woocommerce_check_cart_items', '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("churchhela-i-pastila", $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'
            );
         }
        }
    }

}

который я вставил соответственно в файл темы functions.php к сожалению на данный код со стороны моей корзины нет никакой реакции. Если же я использую плагин Minimum Order Amount for Woocommerce то реакция корзины есть, но на весь товар (на все категории), а требуется для каждой отдельной категории иметь возможность устанавливать свой минимальный заказ.
 

dim70

Опытный
Нашёл плагин Minimum Purchase for WooCommerce который имеет возможность выставить для каждой категории минимальный заказ, но такая возможность есть только в платной версии. Ладно думаю, пусть будет платно, но и тут засада - официальный сайт разработчика лежит. Как быть?
 

dim70

Опытный
Вот код позволяющий задавать минимальную сумму заказа для каждой страны:
PHP:
add_action( 'woocommerce_check_cart_items', 'wc_minimum_order_amount' );

function wc_minimum_order_amount() {
// Set this variable to specify a minimum order value for a specific country
$minimum = 50;
$county = array('US');

if ( WC()->cart->total < $minimum && in_array( WC()->customer->get_shipping_country(), $county ) {
      
      WC()->add_error( 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 )
            ) );

}
}
информация взята отсюда быть может есть у кого-нибудь совет как сделать чтобы для каждой категории товара задавать свой минимальный заказ?
 

ADv

Гуру
Местный
Вот код позволяющий задавать минимальную сумму заказа для каждой страны:
PHP:
add_action( 'woocommerce_check_cart_items', 'wc_minimum_order_amount' );

function wc_minimum_order_amount() {
// Set this variable to specify a minimum order value for a specific country
$minimum = 50;
$county = array('US');

if ( WC()->cart->total < $minimum && in_array( WC()->customer->get_shipping_country(), $county ) {
     
      WC()->add_error( 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 )
            ) );

}
}
информация взята отсюда быть может есть у кого-нибудь совет как сделать чтобы для каждой категории товара задавать свой минимальный заказ?
уберите переменную $country
+
измените условие
PHP:
if ( WC()->cart->total < $minimum && in_array( WC()->customer->get_shipping_country(), $county ) {
пример условия - в коде, что Вы постили выше
 

dim70

Опытный
Спасибо...
Вот рабочий код который позволяет задавать для разных категорий товара разные минимальные значения заказа в корзине:
PHP:
add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );

function wc_minimum_order_amount() {

    // minimum order value
    $minimum = 2000;

    if ( WC()->cart->total < $minimum ) {
        if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
            $products_min = false;
            foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
                $_product = $values['data'];
                $_product_id = $_product->id;
                $terms = get_the_terms( $_product_id, 'product_cat' );
                foreach ($terms as $term) {
                    $_categoryid = $term->term_id;
                }
                // your products categories
                if ( $_categoryid === 114 ) {
                    $products_min = true;

                }
            }
            if( ( is_cart() || is_checkout() ) && $products_min ) {
                wc_print_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->total )
                    ), 'error'
                );
            }
        }
    }
}

источник информации
 

Useer72

Опытный
Местный
Проверил? Робит хоть?
Получается для каждой категории нужно такой отдельный код вставлять, если минималка разная.
Вообще, он как-то "перегружен" мне показался. Похоже его можно упростить.
 

dim70

Опытный
Проверил? Робит хоть?
Получается для каждой категории нужно такой отдельный код вставлять, если минималка разная.
Вообще, он как-то "перегружен" мне показался. Похоже его можно упростить.

Да, установил, добавил две категории для которых установлен минимальный заказ - работает. На другие категории соответственно ограничение не распространяется. Вот теперь думаю, если появится категория с иным значением минимального заказа, как это надо будет прописать? Продублировать код с другими данными или как-то иначе можно будет сделать, пока не знаю.
 

dim70

Опытный
У меня вышеупомянутый код не работает почему-то (
Вы прописали свои категории в представленном коде? Вот фрагмент кода где надо указать цифрами Ваши категории:
PHP:
// your products categories
                if ( $_categoryid === 114 ) {
                    $products_min = true;

                }
 
Сверху Снизу