本篇文章更新時間:2021/06/28
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
這需求我以為以前寫過文章筆記。找了一下沒發現就來寫!
如同標題所述,不論是消費時希望不要記憶上一次的物流方式或是開發時想測試不同情境,都有這個「指定」的需求在。
WooCommerce 後台金流或物流方式都可以用滑鼠點著選項上下拖曳排序,這已經能讓基本的排序實現,先前也筆記過幾篇付款方式與物流運送方式的排序文章:
- [WooCommerce] 付款方法項目的排序控制(訂單滿額、變更順序)
- [WooCommerce] 運送方法項目的排序控制(依照運費、指定順序)
- [WooCommerce] 根據結帳金額設定金流付款方式選項
本篇方法如下:
function mxp_reset_previous_chosen_shipping_method() {
// 如果正在 結帳頁面 而且 不是WC結帳的端點路徑(收到訂單、查看訂單..) 而且 顧客已登入 的情況下
if( is_checkout() && ! is_wc_endpoint_url() && is_user_logged_in() ) {
// 指定預設使用運送物流
WC()->session->set( 'chosen_shipping_methods', array('flat_rate:14') );
}
}
add_action( 'template_redirect', 'mxp_reset_previous_chosen_shipping_method' );
本篇為概念的筆記,實際上述程式碼運用還要再調整,切勿直接套用。
關鍵其實就是 template_redirect
這個 Hook 的觸發時機。會在換頁面的時候進行順序很前面的程式運作影響。也可以在這個 Hook 客製化一些參數,來指定呈現選項的結果。
例如: https://www.mxp.tw/checkout/?shipping=1&billing=2
這兩個 shipping
& billing
參數可以作為傳遞「指定」運送方法與物流運送方法的操作。
當然常見的瀏覽連結就帶入優惠券 Coupon 也是可以透過這邊來一起完成!
Ref: Reset previous chosen shipping method in Woocommerce checkout page