Не разрешать определенное количество продуктов в корзине

#php #woocommerce #conditional-statements #cart #checkout

#php #woocommerce #условные операторы #Корзина #Оформить покупку

Вопрос:

Мы хотим, чтобы клиенты покупали только следующие количества.

  • 1 Пакет
  • 2 пакета
  • 3 пакета
  • 4 пакета
  • 5 пакетов
  • 10 пакетов

Пока что нам удалось ограничить количество количеств, которые можно выбрать на странице одного продукта,

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

 // Checking and validating when products are added to cart
add_filter( 'woocommerce_add_to_cart_validation', 'only_six_items_allowed_add_to_cart', 10, 3 );

function only_six_items_allowed_add_to_cart( $passed, $product_id, $quantity ) {

$cart_items_count = WC()->cart->get_cart_contents_count();
$total_count = $cart_items_count   $quantity;

if( $cart_items_count >= 10 || $total_count > 10 ){
    // Set to false
    $passed = false;
    // Display a message
     wc_add_notice( __( "Sorry, You can’t have more than 10 bags in your cart.", "woocommerce" ), 
"error" );
}
return $passed;
}
  

Теперь нам просто нужно добавить условие, которое будет ограничивать пользователя (и отображать предупреждение) всякий раз, когда он пытается увеличить количество в корзине, в диапазоне 6-9 мешков.

Проблема в том, что, например, клиент добавляет 5 пакетов в свою корзину, и после этого, что, если он вернется и попытается добавить еще один пакет?

Я хочу избежать этой ситуации, поэтому клиент может приобрести только указанные выше количества.

Пожалуйста, проверьте эту ссылку, чтобы лучше понять ситуацию: https://mettaatta.com/product/metta-atta

Комментарии:

1. if($total_count >=6 || $total_count <=9){ ... }

2. Как они увеличат количество в корзине на 6-9 мешков, если вы просто не разрешите это? Используйте выпадающий список с вариантами: 1 Пакет 2 пакета 3 пакета 4 пакета 5 пакетов 10 пакетов

3. @vincentPHILIPPE Они могут вернуться на страницу с одним товаром, и тогда они смогут добавить больше товаров. У меня уже есть выпадающий список. Проблема в том, что, например, клиент добавляет 5 пакетов в свою корзину, и после этого, что, если он вернется и попытается добавить еще один пакет? Я хочу избежать этой ситуации, поэтому клиент может приобрести только указанные выше количества. Пожалуйста, проверьте эту ссылку: mettaatta.com/product/metta-atta

4. Хорошо, я понял, так почему бы не проверить количество таким образом? if($total_count >=6 || $total_count <=9){ ... }

5. if($total_count >=6 amp;amp; $total_count <=9){ ... } Извините, моя ошибка. Я помещаю || вместо amp;amp;

Ответ №1:

Этот :

 if($cart_items_count >= 10 || $total_count > 10 ){
    // Display a message
}
if($total_count >=6 amp;amp; $total_count <=9){
   // Display a message
}
  

Будет работать так, как вам нужно.

Редактировать

Если вы хотите их объединить :

 if(($cart_items_count >= 10 || $total_count > 10) || ($total_count >=6 amp;amp; $total_count <=9)){
   // Display a message
}
  

Комментарии:

1. Большое вам спасибо! Кроме того, если вы хотите отобразить другое сообщение для второго условия. Должен ли я просто повторно объявить код снова?

2. Если вам нужны два разных сообщения, вы не должны комбинировать два условия.

3. Большое вам спасибо! Я действительно ценю вашу помощь и поддержку. Хорошего дня, впереди!