首页 文章

将Woocommerce新订单设置为“暂停”而不进行“处理”

提问于
浏览
-1

是否可以将所有新订单设置为暂停而不先进行处理?

我需要获取资金,但订单需要暂停而不是处理,这样我才能确保在触发向供应商发送电子邮件之前收到付款 .

我找到了一些代码,允许我将所有新订单更改为暂停,但是当付款被授权时,订单将设置为处理 .

pending payment --> processing (triggers email) --> on-hold

Screenshot of Order Notes that show this

这是我找到的代码:

add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_onhold_order' );

function custom_woocommerce_auto_onhold_order( $order_id ) {
global $woocommerce;
if ( !$order_id )
return;
$order = new WC_Order( $order_id );
$order->update_status( 'on-hold' ); //All new orders go to "on-hold"
}

我一直在寻找触发订单状态的操作设置为支付授权处理但是我找不到它 .

非常感谢所有帮助!

编辑:我已经设法偶然发现了一段似乎有用的代码片段 .

add_filter( 'woocommerce_payment_complete_order_status', 'custom_update_order_status', 10, 2 );

function custom_update_order_status( $order_status, $order_id ) {

return 'on-hold'; 

}

1 回答

  • 0

    所有订单都以Woocommerce中的“待处理”状态开头 . 该状态在通过支付网关之前设置...没有针对“待处理”订单状态的电子邮件通知

    您可以尝试以下操作,即 set the status "on-hold" on order creation (更新状态操作在订单创建并保存在数据库中后出现):

    add_action( 'woocommerce_checkout_create_order', 'force_new_order_status', 20, 1 );
    function force_new_order_status( $order ) {
    
        if( ! $order->has_status('on-hold') )
            $order->set_status( 'on-hold', 'Forced status by a custom script' );
    }
    

    代码位于活动子主题(或活动主题)的function.php文件中 . 经过测试和工作 .

    enter image description here

相关问题