如何将woocommerce
的订单状态从处理更改为完成
?
我找到了代码段,但是仅当您转到“谢谢”页面时,它才会更改状态,但是如果我的客户决定仅关闭paypal
页面而不转到“谢谢”页面?
然后它仍在处理中,已经对其进行了测试。我需要自动检测处理状态并将其更改为处理中。
答案 0 :(得分:0)
这将检查订单何时更改状态。如果状态变为处理中,它将状态设置为已完成。请注意,它确实经过处理,因此用户可能会收到两封电子邮件。您可以在WC设置信息中心中禁用其中一封电子邮件。
function wc_status_change($order_id,$old_status,$new_status) {
$order = new WC_Order( $order_id );
if($order->status == 'processing'){
$order->update_status('completed');
}
}
答案 1 :(得分:0)
在您的情况下,您有两个选择,第一个可能不起作用,因为它与woocommerce的早期版本有关,但第二个应该起作用
将代码添加到您的functions.php
1º
add_filter( 'woocommerce_payment_complete_order_status', 'update_order_status_woo', 10, 2 );
function update_order_status_woo( $order_status, $order_id ) {
$order = new WC_Order( $order_id );
if ( $order_status == 'processing' && ( 'on-hold' == $order->status || 'pending' == $order->status || 'failed' == $order->status ) ) {
return 'completed';
}
return $order_status;
}
2º
add_action('woocommerce_order_status_changed', 'auto_update_processing_to_complete');
function auto_update_processing_to_complete($order_id)
{
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
if ($order->data['status'] == 'processing') {
$order->update_status( 'completed' );
}
}