本篇文章更新時間:2021/12/16
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
WooCommerce 我的帳號(My Account)預設的訂單列表欄位畫面如下:
如果要客製化這張表單裡的欄位,可以使用 woocommerce_my_account_my_orders_columns
這個 Hook 來建立新的欄位,並且使用 woocommerce_my_account_my_orders_column_ +欄位編號
的動態 Hook 來實現新欄位的填值。
增加欄位「收件地址」如下圖:
完整方法如下:
function mxp_wc_add_my_account_orders_column($columns) {
// 儲存新欄位的陣列
$new_columns = array();
foreach ($columns as $key => $name) {
// 預設的 $key 有下面五個
// order-date
// order-status
// order-total
// order-actions
// order-number
$new_columns[$key] = $name;
// 將新欄位建立在「訂單狀態」欄位之後,叫做
if ('order-status' === $key) {
$new_columns['order-shipping-to'] = '收件地址';
}
}
return $new_columns;
}
add_filter('woocommerce_my_account_my_orders_columns', 'mxp_wc_add_my_account_orders_column');
function mxp_wc_my_orders_shipping_to_column($order) {
$shipping_address_1 = $order->get_shipping_address_1();
$shipping_address_2 = $order->get_shipping_address_2();
$shipping_city = $order->get_shipping_city();
$shipping_state = $order->get_shipping_state();
$shipping_postcode = $order->get_shipping_postcode();
$shipping_country = $order->get_shipping_country();
$billing_address_1 = $order->get_billing_address_1();
$billing_address_2 = $order->get_billing_address_2();
$billing_city = $order->get_billing_city();
$billing_state = $order->get_billing_state();
$billing_postcode = $order->get_billing_postcode();
$billing_country = $order->get_billing_country();
// 無運送地,就是以帳單地址為準
$shipping_address = $shipping_address_1 != "" ? "{$shipping_postcode} {$shipping_state}{$shipping_city}{$shipping_address_1}{$shipping_address_2}" : "{$billing_postcode} {$billing_state}{$billing_city}{$billing_address_1}{$billing_address_2}";
echo !empty($shipping_address) ? $shipping_address : '–';
}
add_action('woocommerce_my_account_my_orders_column_order-shipping-to', 'mxp_wc_my_orders_shipping_to_column');
將上述程式碼片段放置子主題 functions.php
裡即可~
要注意的是,我在開欄位的方法裡,定義了「shipping-to」的欄位編號,這個編號要用在動態 Hook 裡來組合使用,才可以把值填入對應哦!其他欄位用途也是相同道理。