[WooCommerce] 購物車商品下單邏輯檢查的時機點

本篇文章更新時間:2021/11/26
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


今天碰到的需求是一個「預定到貨日」外掛的地雷,雖然可以在下單前選擇預定到貨日,但因為這樣下單的商品,並不一定會馬上下單。

如果實際上下單日都超過預定到貨日了怎辦?

BUG 就是這樣發生XD

的確是可以選好日期準備下單,但有不少人都習慣等一個優惠才去真的結帳。那這個功能的選擇就可能會有問題發生!

這類型附加在商品有額外選項的外掛,都是針對下單商品補上 meta 描述來處理。 WooCommerce 下單後到購物車(Cart)時會是一個單獨專屬消費者的物件(Line Item),而不是單純用「商品」來看。

所以如果上述情境發生時,要在 Cart 購物車裡去檢查這些 meta 資訊是否有過時就可以用下列方法:

function mxp_check_cart_product($title, $cart_item, $cart_item_key) {
    $_product  = $cart_item;
    $prdd_date = $_product['prdd_date'];
    if (isset($prdd_date) && $prdd_date != "") {
        $ts = strtotime($prdd_date);
        if ($ts < time()) {
            $title .= "(此商品預定到貨日期錯誤,請重新選購)";
            WC()->cart->remove_cart_item($cart_item_key);
            wc_add_notice( $title.' 商品由於預定到貨日期已經過期,請重新下單選購。', 'error' );
        }
    }
    return $title;
}
add_filter('woocommerce_cart_item_name', 'mxp_check_cart_product', 11, 3);

每一個購物車下單商品都會過這邏輯去檢查,有問題還可以順便改購物車商品標題提示消費者。

範例除了移除掉購物車滿足條件的商品外,還補上錯誤警示,這樣一來真的碰到這情境,到了結帳頁面也至少還會看到警示,滿好切入操作的時機點!

就算程式碼裡有寫移除購物車的方法,但實際上觸發不會這麼即時,所以消費者還是會看到這商品在購物車,只是名字上補了備註提示。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon