将Woocommerce新订单设置为"暂停"无需进入"处理"

时间:2018-03-29 09:02:43

标签: php wordpress woocommerce checkout orders

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

我需要获取资金,但订单需要暂停而不是处理,以便我可以确保在触发电子邮件之前收到付款。

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

待付款 - >处理(触发电子邮件) - >暂停

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 :(得分:0)

  

所有订单均以Woocommerce中的“待处理”状态开头。该状态在通过支付网关之前设置...

     

“待处理”订单状态

没有电子邮件通知

您可以尝试以下操作,设置状态“暂停”创建订单 (更新状态操作在订单生成后出现创建的ans保存在数据库中)

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