Допустим, у меня есть продукт А, который разрешен к покупке в одиночку.
Если что-то еще есть в корзине, это показывает сообщение. "Не разрешено". Я пробовал разные методы, но не смог найти правильного решения для этого.
Когда кто-то пытается нажать на кнопку «ДОБАВИТЬ В КОРЗИНУ», он должен проверить с помощью кода, что, если другие товары в корзине не могут быть добавлены в корзину, и показывает сообщение.
ПРОДУКТ А разрешается покупать отдельно.
Я пробовал со сравнением категорий, и это работает. но я хочу сделать только с идентификатором продукта.
add_filter('woocommerce_add_to_cart_validation', 'dont_add_paint_to_cart_containing_other', 10, 5);
function dont_add_paint_to_cart_containing_other($validation, $product_id) {
// Set flag false until we find a product in cat paint
$cart_has_paint = false;
// Set $cat_check true if a cart item is in paint cat
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$products_ids = 137817;
$product = $cart_item['data'];
if (has_term('miscellaneous', 'product_cat', $product->id)) {
$cart_has_paint = true;
// break because we only need one "true" to matter here
break;
}
}
$product_is_paint = false;
if (has_term('miscellaneous', 'product_cat', $product_id)) {
$product_is_paint = true;
}
// Return true if cart empty
if (!WC()->cart->get_cart_contents_count() == 0) {
// If cart contains paint and product to be added is not paint, display error message and return false.
if ($cart_has_paint && !$product_is_paint) {
echo '<script type="text/javascript">';
echo ' alert("Hello,Sorry, “custom order” items must be purchased separately! To purchase this item, please either checkout with your current cart or remove any “custom order” items from your cart to enable you add the regular items.")'; //not showing an alert box.
echo '</script>';
$validation = false;
}
// If cart contains a product that is not paint and product to be added is paint, display error message and return false.
elseif (!$cart_has_paint && $product_is_paint) {
echo '<script type="text/javascript">';
echo ' alert("Sorry, “custom order” item must be purchased separately! To purchase any “custom order” items, please either checkout with your current cart or empty cart to enable you add the “custom order” items.")'; //not showing an alert box.
echo '</script>';
$validation = false;
}
}
// Otherwise, return true.
return $validation;
}
Этот код работает только с категорией miscellaneous
, которую я хочу разрешить только с идентификатором продукта .. не категория ..