2016-04-13 20 views
3

WooCommerceでは、BACS(直接銀行振替)を使用した注文は"on-hold"に設定されています。WooCommerce変更注文ステータスBACS処理

これを自動的に処理に変更する方法を教えてください。

私はそれがfunctions.php

内部の作業をするためにwan't私は、次のコードを持っているが、それは動作しません:

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

function rfvc_update_order_status($order_status, $order_id) { 
    $order = new WC_Order($order_id); 
    if ('on-hold' == $order_status && 'on-hold' == $order->status) { 
     return 'processing'; 
    } 
    return $order_status; 
} 

すべてのヘルプは素晴らしいことです!

+1

私は最初のフィルタは、BACSの支払いを誘発しないようであるように、第2のアプローチのために行くことにしました。 –

答えて

5

(更新)

add_filter('woocommerce_payment_complete_order_status', 'my_custom_function', 10, 2);はBACS支払方法を誘発しないようです。 this threadに基づいて

add_action('woocommerce_thankyou', 'my_custom_function', 10, 1);は仕事をしていません:

add_action('woocommerce_thankyou', 'bacs_order_payment_processing_order_status', 10, 1); 

function bacs_order_payment_processing_order_status($order_id) { 

    if (! $order_id) { 

    return; 

    } 

    global $woocommerce; 
    $order = new WC_Order($order_id); 

    if ((get_post_meta($order->id, '_payment_method', true) == 'bacs') && ('on-hold' == $order->status || 'pending' == $order->status)) { 

    $order->update_status('processing'); 

    } else { 

    return; 

    } 

} 
+0

これは完璧です! :) ありがとうございました! –

1

これにコードを変更してみてください:

function rfvc_update_order_status($order_status, $order_id) { 
    $order = new WC_Order($order_id); 
    if ('on-hold' == $order_status && 'on-hold' == $order->status) { 
     $order->update_status('processing', 'order_note'); 
    } 
    return $order_status; 
} 

ここで重要な変更は以下です:

$order->update_status('processing', 'order_note'); 

希望する場合は、あまりにも注文メモを追加することができます。

+0

ああ、私は 'woocommerce_payment_complete_order_status'にフックしています。その支払いオプションが人に請求書を送付するだけです。 –

+0

お試しいただけますか?通常それはすべきです。 –

+0

私はそれを試しましたが、実際にはうまくいかないようです。 –

関連する問題