商品がカートに追加されたら、他のカテゴリの商品を追加できないようにしたいと考えています。顧客は引き続き同じカテゴリのアイテムを追加することができます。ここでWooCommerce:同じカテゴリの商品をカートに入れられますか?
は、私がこれまで持っているものです。
function is_product_the_same_cat($valid, $product_id, $quantity) {
global $woocommerce;
// start of the loop that fetches the cart items
foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) {
$_product = $values['data'];
$terms = get_the_terms($_product->id, 'product_cat');
$target_terms = get_the_terms($product_id, 'product_cat'); //get the current items
foreach ($terms as $term) {
$cat_ids[] = $term->term_id; //get all the item categories in the cart
}
foreach ($target_terms as $term) {
$target_cat_ids[] = $term->term_id; //get all the categories of the product
}
}
$same_cat = array_intersect($cat_ids, $target_cat_ids); //check if they have the same category
if(count($same_cat) > 0) return $valid;
else {
wc_add_notice('This product is in another category!', 'error');
return false;
}
}
add_filter('woocommerce_add_to_cart_validation', 'is_product_the_same_cat',10,3);
私はすでに私のカート内のアイテムを持っている場合、これは動作しますが、それは私が空のカートから何かを追加してみましょうと、常にエラーメッセージを表示しません。
ありがとうございます!