wc_update_order()未按预期工作

时间:2017-02-04 21:16:40

标签: php wordpress woocommerce hook-woocommerce woocommerce-rest-api

我正在努力更新客户'前端的结算明细。我有以下代码:

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

2 个答案:

答案 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