3
我在購物車中添加特殊商品類別'cat_x'的商品時,使用以下代碼從商品中移除其他WooCommerce商品類別商品並顯示一些不同的自定義商品注意事項。該代碼來自this thread,只是效果很好:限制購物車商品來自同一產品類別
add_action('woocommerce_check_cart_items', 'checking_cart_items');
function checking_cart_items() {
$special = false;
$catx = 'cat_x';
$number_of_items = sizeof(WC()->cart->get_cart());
if ($number_of_items > 0) {
// Loop through all cart products
foreach (WC()->cart->get_cart() as $cart_item_key => $values) {
$item = $values['data'];
$item_id = $item->id;
// detecting if 'cat_x' item is in cart
if (has_term($catx, 'product_cat', $item_id)) {
if (!$special)
$special = true;
}
}
// Re-loop through all cart products
foreach (WC()->cart->get_cart() as $cart_item_key => $values) {
$item = $values['data'];
$item_id = $item->id;
if ($special) // there is a 'cat_x' item in cart
{
if ($number_of_items == 1) { // only one 'cat_x' item in cart
if (empty($notice))
$notice = '1';
}
if ($number_of_items >= 2) { // 'cat_x' item + other categories items in cart
// removing other categories items from cart
if (!has_term($catx, 'product_cat', $item_id)) {
WC()->cart->remove_cart_item($cart_item_key); // removing item from cart
if (empty($notice) || $notice == '1')
$notice = '2';
}
}
} else { // Only other categories items
if (empty($notice))
$notice = '3';
}
}
// Firing notices
if ($notice == '1') { // message for an 'cat_x' item only (alone)
wc_add_notice(sprintf('<p class="woocommerce-error">bla bla bla one category X item in the cart</p>'), 'success');
} elseif ($notice == '2') { // message for an 'cat_x' item and other ones => removed other ones
wc_add_notice(sprintf('<p class="woocommerce-error">bla bla bla ther is already category X in the cart => Other category items has been removed</p>'), 'error');
} elseif ($notice == '3') { // message for other categories items (if needed)
wc_add_notice(sprintf('<p class="woocommerce-error">bla bla bla NOT category X in the cart</p>'), 'success');
}
}
}
具有條件函數has_term()與類別的陣列也工作,我已經試過,而不是一個類別,設置類別的數組中的代碼。 但它不起作用。
但是,我的需求發生了變化:我不想讓客戶有可能從不同類別中選擇購物車物品。所以購物車必須始終有來自同一產品類別的物品。
請幫忙嗎?
謝謝。
謝謝你,這個解決方案完美的作品。 –