WooCommerce-将订单状态从暂挂更改为待付款

时间:2017-03-01 作者:Gill

一旦产品供应商将订单标记为已完成,我将尝试自动将订单状态从“暂停”更改为“待付款”。目前,创建订单时的默认状态为“保留”,并且只有产品交付后才需要付款。是否可以在执行操作后更新为“挂起”状态?

4 个回复
SO网友:BugDecode

如果您需要从php更改订单状态,下面是如何操作的。

$order = new WC_Order($order_id);

if (!empty($order)) {
 $order->update_status( \'completed\' );
}
可能的值:处理、保留、取消、完成

这是来自woocommerce/includes/abstracts/AbstractWC订单。php

SO网友:Ivan K. Serensen

有点晚了,但仍然很难找到。。。

Possible values

基于https://www.bozzmedia.com/posts/get-know-woocommerce-status-definitions/

“”processing, on-hold, cancelled, completed, pending, failed, refunded“”

这在WooCommerce订单类中受支持
/woocommerce/includes/class wc订单。php-108行左右

假设您没有使用能够添加更多内容的插件。

SO网友:Bernard Van Isacker

这将起作用:

add_filter( \'woocommerce_bacs_process_payment_order_status\', function( $status = \'on_hold\', $order = null ) {
return \'pending\';
}, 10, 2 );
但如果您使用它,状态更改可能会导致在收到订单后无法发送电子邮件,因为它从“待定”到“待定”的速度太快,而woocommerce不会在“待定”状态下发送邮件。我试过了,几天后邮件不再发送了,尽管它最初起作用了。

SO网友:Sonali

是的,您只需添加see即可更改状态并在该函数中添加。

   add_action(\'woocommerce_order_status_changed\',\'status_changed_processsing\');
   function status_changed_processsing( $order_id, $checkout = null ) {
       global $woocommerce;
       $order = new WC_Order( $order_id );
       if(your condition goes here){

           //assign statu to that order
           $order->status = \'pending\';
        }
   }