I've been searching around but can't get it to work.
Using the api v3 I'm able to get all orders and everything is ok, but now I need to be able to update a metadata, when I use insomnia I manage to update the metadata, but now I need to do it from a php script
but it just won't work.
with insomnia using put
.
{ "meta_data": [ { "key": "_mensajero", "value": "juan carlos" } ]}
and it works and update order meta, but with php
no matter what I try I cannot get it to update
<?php
if (isset($_POST['btn-update'])) {
$oid = $_POST['cId']; /////the order id
$data = [
'meta_data' => [
'_mensajero' => '_mensajero'
]
];
$woocommerce->put('orders/' . $oid, $data);
header('Location: #');
}
?>
There are multiple ways to update the meta data. One common way would be to use the order object
and one of its methods called update_meta_data
. Like this:
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
}
}
Another way of updating meta data using update_post_meta
function:
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
}
}