簡體   English   中英

目前只有一款產品加入Woocommerce購物車?

[英]Only one currently added product into Woocommerce cart?

我希望Woocommerce只允許購物車中的1個產品。 如果產品已經在購物車中並且添加了另一個產品,那么它應該刪除之前的產品。

我在網上找到了這個代碼:

/**
 * When an item is added to the cart, remove other products
 */
function custom_maybe_empty_cart( $valid, $product_id, $quantity ) {

if( ! empty ( WC()->cart->get_cart() ) && $valid ){
    WC()->cart->empty_cart();
    wc_add_notice( 'Only allowed 1 item in cart, please remove previous 
item.', 'error' ); // here instead popup notice need to remove prevous added product
}

return $valid;

}
add_filter( 'woocommerce_add_to_cart_validation', 'custom_maybe_empty_cart', 
10, 3 );

但似乎這不符合我的要求。 它需要在購物車中自動移植以前添加的產品,並在購物車中添加最新添加的產品。 有人可以給我提示需要更新課程以便在最新的woo 3.3.X中工作嗎?

這個是更緊湊和實際的代碼,因為不再需要global $woocommerce

add_filter( 'woocommerce_add_to_cart_validation', 'auto_empty_cart', 20, 3 );
function auto_empty_cart( $passed, $product_id, $quantity ) {
    if( WC()->cart->is_empty() ) return $passed; // Exit

    WC()->cart->empty_cart();
    return $passed;
}

代碼位於活動子主題(或活動主題)的function.php文件中。

經過測試,適用於2.6.x以來的所有Woocommerce版本

這在Woocommerce 3.3.X上工作完美

add_filter( 'woocommerce_add_to_cart_validation', 
'bbloomer_only_one_in_cart', 99, 2 );

function bbloomer_only_one_in_cart( $passed, $added_product_id ) {

global $woocommerce;

// empty cart: new item will replace previous
$woocommerce->cart->empty_cart();

// display a message if you like
wc_add_notice( 'Product added to cart!', 'notice' );

return $passed;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM