Мой вопрос и код напрямую основаны на этом вопросе -
"
У меня есть магазин, содержащий 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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как исключить определенную категорию продуктов woocommerce из списка отображаемых категорий?
Anonymous » » в форуме Php - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
WooCommerce: проверьте, имеет ли подкатегория определенную родительскую категорию.
Anonymous » » в форуме Php - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-