本篇文章更新時間:2019/07/13
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
有用過綠界物流的人肯定有發現一件事,先前填好結帳欄位的資料因為頁面被刷新後而消失。不過自己手殘或是其他因素導致畫面刷新也是有可能發生這件事。
資料消失要重新填入的體驗真的很不好,所以就需要想辦法存起來啦!
這邊之前有筆記過( [WooCommerce] 片段(fragments)互動程式設計要點 ),這次特別抽出來寫。
下方是程式碼片段是搭配我常用的這篇 [WordPress] 調整適合 WooCommerce 在台銷售結帳頁欄位(含地址郵遞區號選擇) 裡面使用的欄位。
function mxp_wc_save_session_data($value) {
$data = $_POST['post_data'];
parse_str(html_entity_decode($data), $pdata);
if (isset($pdata['billing_first_name']) && $pdata['billing_first_name'] != "") {
WC()->session->set('billing_first_name', $pdata['billing_first_name']);
}
if (isset($pdata['billing_phone']) && $pdata['billing_phone'] != "") {
WC()->session->set('billing_phone', $pdata['billing_phone']);
}
if (isset($pdata['billing_company']) && $pdata['billing_company'] != "") {
WC()->session->set('billing_company', $pdata['billing_company']);
}
if (isset($pdata['billing_email']) && $pdata['billing_email'] != "") {
WC()->session->set('billing_email', $pdata['billing_email']);
}
if (isset($pdata['billing_company_tax_id']) && $pdata['billing_company_tax_id'] != "") {
WC()->session->set('billing_company_tax_id', $pdata['billing_company_tax_id']);
}
$value['#billing_first_name'] = '';
$value['#billing_phone'] = '';
$value['#billing_company'] = '';
$value['#billing_company_tax_id'] = '';
$value['#billing_email'] = '';
return $value;
}
add_filter('woocommerce_update_order_review_fragments', 'mxp_wc_save_session_data');
其實預設 WooCommerce 是會幫忙存幾個欄位,像是國家、縣市、鄉鎮、地址、郵遞區號等,不含姓名,而其他資料都會放在 post_data
這欄位,需要自己去解析過來儲存。
更多資料:[WooCommerce] 調整結帳欄位的終極指南