本篇文章更新時間:2021/06/28
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持


這需求我以為以前寫過文章筆記。找了一下沒發現就來寫!

如同標題所述,不論是消費時希望不要記憶上一次的物流方式或是開發時想測試不同情境,都有這個「指定」的需求在。

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


Share:

作者: Chun

WordPress 社群貢獻者、開源社群推廣者。專注於 WordPress 外掛開發、網站效能最佳化、伺服器管理,以及 iDempiere 開源 ERP 導入與客製開發。曾參與 WordCamp Taipei 等社群活動,GitHub Arctic Code Vault Contributor。提供資訊顧問、WordPress 開發教學、主機最佳化與企業 ERP 整合服務。

發佈留言

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


文章
Filter
Apply Filters
Mastodon