更改Woocommerce的货到付款订单状态


Change Woocommerce order status for Cash on delivery

我需要更改Woocommerce应用于通过货到付款的订单的默认订单状态。默认是processing,我需要将其设置为on-hold。我已经试过了

    add_action( 'woocommerce_thankyou', 'my_order_status', 50 );
    function my_order_status( $order_id ) {
    if ( ! $order_id ) {
    return;
    }
    $order = wc_get_order( $order_id );
    if ( ( get_post_meta( $order->id, '_payment_method', true ) == 'cod'  ) && ( $order->status == 'processing' ) ) {
    $order->update_status('on-hold');
    }
    }

但它不起作用。任何想法吗?

这就解决了我的问题

add_action('woocommerce_thankyou_cod', 'action_woocommerce_thankyou_cod', 10, 1);
function action_woocommerce_thankyou_cod($order_id)
{
 $order = wc_get_order($order_id);
 $order->update_status('on-hold');
}

将其放入functions.php

要解决这个问题,请使用下面的代码:

add_action( 'woocommerce_thankyou', 'wc_change_status' );
function wc_change_status( $order ) {
        $order = new WC_Order($order);
        $order->update_status('on-hold', 'This is the change status');
        //print('<pre>');
      //  print_r($order);
       }