Мой вопрос и код напрямую основаны на этом вопросе -
"
У меня есть магазин, содержащий 5 категорий. В нем много поставщиков, и из-за сложностей с доставкой я могу продавать товары только из одной конкретной категории ( «краска»), когда они одни в корзине. Поэтому мне нужно предотвратить добавление в корзину любых продуктов, не являющихся красками, когда в корзине есть краска, и отобразить сообщение об ошибке, а также мне нужно предотвратить добавление продуктов с красками в корзину. содержащий любые другие категории, и отключить сообщение об ошибке.
Я попытался собрать этот код из фрагментов, которые нашел на Stackoverflow и в других местах. Кажется, логика работает. мой мозг, но когда я пытаюсь реализовать код (через function.php), он предотвращает добавление любого продукта в корзину, если она не пуста."
Ссылка на вопрос -Запретить добавление в корзину, если корзина содержит определенную категорию (WooCommerce)
Я проверил и изменил принятый ответ в соответствии со своими потребностями, однако, похоже, он вообще не работает, как у меня тот же вопрос, только относящийся к другой категории (т. е. газу вместо краски), насколько я понимаю, мне просто нужно будет изменить функцию «has_term», чтобы заставить ее работать, поскольку это всего лишь вопрос указания на конкретной категории?
//*** Prevent mixture of gas and other prods in same cart ***//
function dont_add_gas_to_cart_containing_other($validation, $product_id) {
// Set flag false until we find a product in gas
$cart_has_gas = false;
// Set $cat_check true if a cart item is in gas cat
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$product = $cart_item['data'];
if (has_term('Gas', 'Gas Tanks & Accessories', $product->id)) {
$cart_has_gas = true;
// break because we only need one "true" to matter here
break;
}
}
$product_is_gas = false;
if (has_term('Gas', 'Gas Tanks & Accessories', $product_id)) {
$product_is_gas = true;
}
// Return true if cart empty
if (!WC()->cart->get_cart_contents_count() == 0) {
// If cart contains gas and product to be added is not gas, display error message and return false.
if ($cart_has_gas && !$product_is_gas) {
wc_add_notice('Sorry, you can only purchase Helium Gas products on their own. To purchase this product, please checkout your current cart or empty your cart and try again', 'error');
$validation = false;
}
// If cart contains a product that is not gas and product to be added is gas, display error message and return false.
elseif (!$cart_has_gas && $product_is_gas) {
wc_add_notice('Sorry, you can only purchase Helium Gas products on their own. To purchase this product, please checkout your current cart or empty your cart and try again', 'error');
$validation = false;
}
}
// Otherwise, return true.
return $validation;
}
add_filter('woocommerce_add_to_cart_validation', 'dont_add_gas_to_cart_containing_other', 10, 2);
Подробнее здесь: https://stackoverflow.com/questions/659 ... t-category
Запретить добавление в корзину, если корзина содержит определенную категорию продуктов Woocommerce. ⇐ Php
Кемеровские программисты php общаются здесь
1722588853
Anonymous
Мой вопрос и код напрямую основаны на этом вопросе -
"
У меня есть магазин, содержащий 5 категорий. В нем много поставщиков, и из-за сложностей с доставкой я могу продавать товары только из одной конкретной категории ( «краска»), когда они одни в корзине. Поэтому мне нужно предотвратить добавление в корзину любых продуктов, не являющихся красками, когда в корзине есть краска, и отобразить сообщение об ошибке, а также мне нужно предотвратить добавление продуктов с красками в корзину. содержащий любые другие категории, и отключить сообщение об ошибке.
Я попытался собрать этот код из фрагментов, которые нашел на Stackoverflow и в других местах. Кажется, логика работает. мой мозг, но когда я пытаюсь реализовать код (через function.php), он предотвращает добавление любого продукта в корзину, если она не пуста."
Ссылка на вопрос -Запретить добавление в корзину, если корзина содержит определенную категорию (WooCommerce)
Я проверил и изменил принятый ответ в соответствии со своими потребностями, однако, похоже, он вообще не работает, как у меня тот же вопрос, только относящийся к другой категории (т. е. газу вместо краски), насколько я понимаю, мне просто нужно будет изменить функцию «has_term», чтобы заставить ее работать, поскольку это всего лишь вопрос указания на конкретной категории?
//*** Prevent mixture of gas and other prods in same cart ***//
function dont_add_gas_to_cart_containing_other($validation, $product_id) {
// Set flag false until we find a product in gas
$cart_has_gas = false;
// Set $cat_check true if a cart item is in gas cat
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$product = $cart_item['data'];
if (has_term('Gas', 'Gas Tanks & Accessories', $product->id)) {
$cart_has_gas = true;
// break because we only need one "true" to matter here
break;
}
}
$product_is_gas = false;
if (has_term('Gas', 'Gas Tanks & Accessories', $product_id)) {
$product_is_gas = true;
}
// Return true if cart empty
if (!WC()->cart->get_cart_contents_count() == 0) {
// If cart contains gas and product to be added is not gas, display error message and return false.
if ($cart_has_gas && !$product_is_gas) {
wc_add_notice('Sorry, you can only purchase Helium Gas products on their own. To purchase this product, please checkout your current cart or empty your cart and try again', 'error');
$validation = false;
}
// If cart contains a product that is not gas and product to be added is gas, display error message and return false.
elseif (!$cart_has_gas && $product_is_gas) {
wc_add_notice('Sorry, you can only purchase Helium Gas products on their own. To purchase this product, please checkout your current cart or empty your cart and try again', 'error');
$validation = false;
}
}
// Otherwise, return true.
return $validation;
}
add_filter('woocommerce_add_to_cart_validation', 'dont_add_gas_to_cart_containing_other', 10, 2);
Подробнее здесь: [url]https://stackoverflow.com/questions/65918488/prevent-add-to-cart-if-cart-contains-a-specific-woocommerce-product-category[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия