是否可以将所有新订单设置为暂停而不先进行处理?
我需要获取资金,但订单需要暂停而不是处理,以便我可以确保在触发电子邮件之前收到付款。
我找到了一些代码,允许我将所有新订单更改为暂停,但是当付款被授权时,订单会设置为处理。
待付款 - >处理(触发电子邮件) - >暂停
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';
}
答案 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文件中。经过测试和工作。