Запретить добавление в корзину, если корзина содержит определенную категорию продуктов Woocommerce.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Запретить добавление в корзину, если корзина содержит определенную категорию продуктов Woocommerce.

Сообщение 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);


Подробнее здесь: https://stackoverflow.com/questions/659 ... t-category
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»