訂單狀態顯示「待付款」(On-Hold),WooCommerce不會發送電子郵件,導致少上線的店長會驚訝地看到上個月有個訂單正在 “等待付款”,其實是信用卡或 Paypal 付款頁沒完成就離開了!
這不只是嚇到店長而已,商品庫存也會扣著,可能導致庫存量過低的假象。
WooCommerce 的等待付款其實沒意義,因為付款出問題,購物車也無法回復,客戶只能重新買一次…這應該在新版有改進,或者有外掛可用?
總之,目前最快的解決辦法是用”保留庫存” (在 Woocommerce 的設定>商品>庫存),設定幾分鐘後,”等待付款”會自動變成”取消”,取消的訂單有通知信。
WP Crontrol 外掛可以看到這樣的排程,方便除錯:
可惜的是,這樣自動取消的訂單,還是沒有通知信…XD
只好自己加程式,可參考官方的樣板,得知在哪邊加比較方便:
https://woocommerce.github.io/code-reference/hooks/hooks.html
找 unpaid 這個字,找到: woocommerce_cancel_unpaid_orders()
[code]add_filter('woocommerce_cancel_unpaid_order','woocommerce_cancel_unpaid_order_WCC',20,2);
function woocommerce_cancel_unpaid_order_WCC( $ret, $order ){
WC()->mailer()->get_emails()['WC_Email_Cancelled_Order']->trigger( $order->get_id() );
return $ret;
}[/code]
如果 $ret 是 False ,那就不會取消,可以用來重複測試寄信程式,只是,需要去設定幾分鐘那邊重刷網頁,以便設定新的排程。