1

我試圖在前端更新客戶的結算明細。我有下面的代碼:wc_update_order()不按預期方式工作

if(isset($_POST['save_order'])){ 
    $update_billing_details = wc_update_order(array('order_id' => $update_order_id)); 
    $update_order_args = array(
     'first_name' => $_POST['billing_first_name'] 
    ); 
$update_billing_details->set_address($update_order_args, 'billing'); 
if($update_billing_details){ 
    echo "success"; 
} 
} 

會發生什麼是,第一個名字是在點擊保存按鈕TWICE後更新。

例子:

原名爲 '約翰'。如果我把它做成'約翰尼'並且保存,它仍然顯示'約翰'。如果我輸入名稱'Johndel',然後點擊保存,它會變成'Johnny',依此類推。

但是,如果我做我的代碼是這樣的:

if(isset($_POST['save_order'])){ 
    $update_order_args = array(
       '_billing_first_name' => $_POST['billing_first_name'], 
       'order_id' => $update_order_id 
       ); 
    $update_billing_details = wc_update_order($update_order_args); 
} 

沒有發生的事情。

我在做什麼錯?我根據我的工作通過this question

任何幫助,高度讚賞。

感謝,

-Eli

回答

1

你可以嘗試使用,而不是update_post_meta()功能,這樣一來:

if(isset($_POST['save_order']) && isset($_POST['billing_first_name'])){ 
    update_post_meta($update_order_id, '_billing_first_name', sanitize_text_field($_POST['billing_first_name'])); 
} 

你必須確保$update_order_id是這裏所定義的訂單ID 。

由於我不能測試這個我不能保證任何東西......我希望這會起作用。