[WooCommerce] 購物車一次只能下單一款商品的做法

聽起來是特例,也沒錯,就是特例XD 像是先前文章有提到的活動購票案例,按照 WooCommerce 購物流程結帳沒有多筆購票(訂單)細節可以填寫,而實作在商品中繼資料(meta)中又很複雜,但最麻煩還是錢的問題,多張票情況下有退款要怎拆?

面對這樣的案例,二話不說直接選擇一次訂單一張票,大家退一步就剛剛好了!

實作方式也不難,在加入購物車的同時,把購物車清空,只保留當前加入的那款商品。

add_filter( 'woocommerce_add_cart_item_data', 'mxp_wc_custom_add_to_cart' );
function mxp_wc_custom_add_to_cart( $cart_item_data ) {
        WC()->cart->empty_cart(true);
        WC()->session->set('cart', array());
        return $cart_item_data;
}

Gist: Link

將上述程式碼放置在子主題下的 functions.php 尾巴即可~

這份資料適用 WooCommerce 3.x 以上版本,2.x 的沒試過!

版本演進要顧慮到上下兼容這件事不只是開發者要注意,使用者也要很小心!

Facebook 外掛整合


Share: