WooCommerce - 使用php代码更改订单状态

Pe-*_*Ter 11 php field class object woocommerce

我试图改变WooCommerce的订单状态,但到目前为止我没有遇到任何运气.$ order实例创建成功(我知道它因为echo $order->status;工作正常,$ order_id也是正确的.$order->status = 'pending';根本不会改变任何东西,我不知道为什么.

$order = new WC_Order($order_id);
$order->status = 'pending';
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我这个吗?

Rat*_*pps 40

试试这段代码:

$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
Run Code Online (Sandbox Code Playgroud)


小智 9

与 一起工作woocommerce v4.4,其他答案对我不起作用。我必须这样做,

$order = wc_get_order($order_id);
$order->set_status('pending');
$order->save();
Run Code Online (Sandbox Code Playgroud)

注意: Woocommerce 内部添加了wc前缀,在数据库中查看就会看到它。我们不需要显式添加它。


小智 6

自 Woocommerce 版本 3.0+ 起,要更新状态,您需要执行此操作

$order = wc_get_order( $order_id );

if($order){
   $order->update_status( 'pending', '', true );
}
Run Code Online (Sandbox Code Playgroud)