Задать вопрос
@Vaprubnyak
Ученик ученика

Как скрыть шлюз в woocommerce если сумма заказа меньше определенной?

Как сделать шлюз оплаты недоступным в woocommerce, если сумма заказа менее определенной суммы, в идеале что бы пункт на странице /checkout показывался, но его нельзя было выбрать и выходило окно что нужно добрать по сумме, возможно есть какие нибудь плагины?
Нашел это, но не знаю как объединить в рабочий вариант
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 = 100;
 
    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.' ,
                    wc_price( $minimum ),
                    wc_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.' ,
                    wc_price( $minimum ),
                    wc_price( WC()->cart->total )
                ), 'error'
            );
 
        }
    }
 
}

add_filter('woocommerce_available_payment_gateways', 'unsetting_payment_gateway', 10, 1);
function unsetting_payment_gateway( $available_gateways ) {

    // Здесь определяется количество товара
    $qty_limit = 15;
    $limit_reached = false;

    // Перебор по каждому элементу в корзине
    foreach(WC()->cart->get_cart() as $cart_item){
        if($cart_item['quantity'] > $qty_limit ){
            $limit_reached = true;
            break;
        }
    }
    if($limit_reached){
        // Здесь установить способ оплаты
        unset($available_gateways['cod']);
        unset($available_gateways['bacs']);
    }
    return $available_gateways;
}
  • Вопрос задан
  • 217 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@Vaprubnyak Автор вопроса
Ученик ученика
Проблема решена спасибо OKyJIucT
Рабочий код:
add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );

$limit_reached = false;

function wc_minimum_order_amount() 
{
	// Задать переменную, чтобы указать минимальное значение заказа
	$minimum = 1000;
	
	if ( WC()->cart->total < $minimum ) {
		$limit_reached = true;
		
	}
	return $limit_reached;
}

function unsetting_payment_gateways( $available_gateways ) 
{	
	$limit_reached = wc_minimum_order_amount();
	if ($limit_reached) {			
			// Здесь установить способ оплаты
			unset($available_gateways['cod']);
	}
	
	return $available_gateways;
}
add_action('woocommerce_available_payment_gateways', 'unsetting_payment_gateways');
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы