I am trying to change order status in WooCommerce, but I encountered no luck so far. $order instance is created successfully (I know it because echo $order->status;
works fine, $order_id is also correct. $order->status = 'pending';
simply doesn't change anything, I do not know why.
$order = new WC_Order($order_id);
$order->status = 'pending';
Could anyone help me with this?
Try this code:
$order = new WC_Order($order_id);
$order->update_status('pending', 'order_note'); // order note is optional, if you want to add a note to order
Since Woocommerce version 3.0+ to update status you need to do this
$order = wc_get_order( $order_id );
if($order){
$order->update_status( 'pending', '', true );
}
Working with woocommerce v4.4
, other answers were not working for me. I had to do it this way,
$order = wc_get_order($order_id);
$order->set_status('pending');
$order->save();
Note: Woocommerce internally adds wc
prefix, you will see it if you view in the database. We do not need to explicitly add it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With