WooCommerce 如何使用 woo rest api 3 更新订单元数据键值

WooCommerce how to update order meta data key value with woo rest api 3

我一直在搜索,但无法正常工作。

使用 api v3 我可以获得所有订单并且一切正常,但现在我需要能够更新元数据,当我使用失眠时我设法更新元数据,但是现在我需要从 php script 开始,但它行不通。

失眠使用 put

{ "meta_data": [ { "key": "_mensajero", "value": "juan carlos" } ]}

它可以工作并更新订单元,但是 php 无论我尝试什么我都无法更新它

<?php
 if (isset($_POST['btn-update'])) {
 $oid = $_POST['cId']; /////the order id
 $data =  [
  'meta_data' => [
    '_mensajero' => '_mensajero'
    
    ]
   ];

   $woocommerce->put('orders/' . $oid,  $data);
  header('Location: #');
   }

?>  

有多种方法可以更新元数据。一种常见的方法是使用 order object 及其方法之一 update_meta_data。像这样:

if (isset($_POST['btn-update'])) 
{

    $oid = absint($_POST['cId']); // the order id

    if($oid)
    {
        $order = wc_get_order($oid);

        if($order)
        {

            $order->update_meta_data('_mensajero', '_mensajero');

            $order->save();

            // Do what ever you want here

        }else{

            die('NO ORDER WITH THE PROVIDED ID FOUND!');
            
           // OR send back a custom error message using 'wp_send_json_error' function
            
        }

    }else{

        die('NO ORDER ID RECIEVED!');

        // OR send back a custom error message using 'wp_send_json_error' function

    }
    
}

另一种使用update_post_meta函数更新元数据的方法:

if (isset($_POST['btn-update'])) 
{

    $oid = absint($_POST['cId']); // the order id

    if($oid)
    {
        $order = wc_get_order($oid);

        if ($order) {

            update_post_meta($oid, '_mensajero', '_mensajero');

            // Do what ever you want here

        } else {

            die('NO ORDER WITH THE PROVIDED ID FOUND!');

            // OR send back a custom error message using 'wp_send_json_error' function
        }

    }else{

        die('NO ORDER ID RECIEVED!');

        // OR send back a custom error message using 'wp_send_json_error' function
    }
    
}