우리는 독점 카테고리 X 및 기타 정규 카테고리 Y을 보유하고 있습니다. 내가 좋아하는 것이 무엇 :WooCommerce 카트 - 조건부 상품 범주 유효성 검사
사람이 카테고리 X에서 아무것도를 주문하면, 다른 카테고리 항목이 장바구니에 추가 할 수 없습니다 및-
.
어떻게하면됩니까?
나는 다른 포스트에서이 코드를 가지고 있지만 오래된 및 만족스럽지 :
<?php
// Enforce single parent category items in cart at a time based on first item in cart
function get_product_top_level_category ($product_id) {
$product_terms = get_the_terms ($product_id, 'product_cat');
$product_category = $product_terms[0]->parent;
$product_category_term = get_term ($product_category, 'product_cat');
$product_category_parent = $product_category_term->parent;
$product_top_category = $product_category_term->term_id;
while ($product_category_parent != 0) {
$product_category_term = get_term ($product_category_parent, 'product_cat');
$product_category_parent = $product_category_term->parent;
$product_top_category = $product_category_term->term_id;
}
return $product_top_category;
}
add_filter ('woocommerce_before_cart', 'restrict_cart_to_single_category');
function restrict_cart_to_single_category() {
global $woocommerce;
$cart_contents = $woocommerce->cart->get_cart();
$cart_item_keys = array_keys ($cart_contents);
$cart_item_count = count ($cart_item_keys);
// Do nothing if the cart is empty
// Do nothing if the cart only has one item
if (! $cart_contents || $cart_item_count == 1) {
return null;
}
// Multiple Items in cart
$first_item = $cart_item_keys[0];
$first_item_id = $cart_contents[$first_item]['product_id'];
$first_item_top_category = get_product_top_level_category ($first_item_id);
$first_item_top_category_term = get_term ($first_item_top_category, 'product_cat');
$first_item_top_category_name = $first_item_top_category_term->name;
// Now we check each subsequent items top-level parent category
foreach ($cart_item_keys as $key) {
if ($key == $first_item) {
continue;
}
else {
$product_id = $cart_contents[$key]['product_id'];
$product_top_category = get_product_top_level_category($product_id);
if ($product_top_category != $first_item_top_category) {
$woocommerce->cart->set_quantity ($key, 0, true);
$mismatched_categories = 1;
}
}
}
// we really only want to display this message once for anyone, including those that have carts already prefilled
if (isset ($mismatched_categories)) {
echo '<p class="woocommerce-error">Only one category allowed in cart at a time.<br />You are currently allowed only <strong>'.$first_item_top_category_name.'</strong> items in your cart.<br />To order a different category empty your cart first.</p>';
}
}
?>
감사
모든처럼
보이는 ... (처음에) 실제 카테고리 슬러그 에 의해
'cat_x'
를 교체해야합니다. –@BluecupsSolution 그냥 환영합니다 :) ... 나는이 답변에 대해 완전히 확신하지 못했습니다. 추가 정보가 필요하면 여기에 의견을 남기십시오. 감사 – LoicTheAztec