我正在努力更新客户'前端的结算明细。我有以下代码:
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后正在更新名字。
示例:
原来的名字是' John'。如果我做的话,约翰尼'并点击保存,它仍显示' John'。如果我输入名称' 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
答案 0 :(得分: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。
由于我无法测试,我无法保证任何事情......我希望这会有效。
答案 1 :(得分:0)
实际上是wc_update_order() uses wc_create_order() function,因此您现在只能更新these parameters:
?oL