本篇文章更新時間:2023/05/19
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
這個需求一開始是「只想開放顯示部分狀態的訂單」,所以前端同事一開始處理這個需求的時候是寫一個判斷去限制顯示。
但碰到算出來的每頁數量不同。所以請我這邊去追一下源頭。
這個控制可以使用 woocommerce_my_account_my_orders_query
這個事件過濾器下手!
開放全部的範例如下:
function mxp_woocommerce_my_account_my_orders_query($args) {
$args['post_status'] = array('wc-failed', 'wc-refunded', 'wc-cancelled', 'wc-on-hold', 'wc-processing', 'wc-pending', 'wc-completed');
return $args;
}
add_filter('woocommerce_my_account_my_orders_query', 'mxp_woocommerce_my_account_my_orders_query', 11, 1);
範例中只有拿內建的「全部」來舉例,實際上如果有定義其他的訂單狀態也是在這個陣列裡去新增就可以。
當然如果只想顯示「部分」狀態的訂單也是從這個陣列清單去下手調整控制就可以了!
程式碼部分帶入的訂單狀態關鍵字是用來資料庫找對應狀態的資料用,下方列出預設的定義
$order_statuses = array(
'wc-pending' => _x('Pending payment', 'Order status', 'woocommerce'),
'wc-processing' => _x('Processing', 'Order status', 'woocommerce'),
'wc-on-hold' => _x('On hold', 'Order status', 'woocommerce'),
'wc-completed' => _x('Completed', 'Order status', 'woocommerce'),
'wc-cancelled' => _x('Cancelled', 'Order status', 'woocommerce'),
'wc-refunded' => _x('Refunded', 'Order status', 'woocommerce'),
'wc-failed' => _x('Failed', 'Order status', 'woocommerce'),
);
要注意有些使用情況下是不需要 wc-
這個前綴符號的。