#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. Большое вам спасибо! Я действительно ценю вашу помощь и поддержку. Хорошего дня, впереди!