新しい 2020 アップデート
woocommerce_thankyou
WooCommerce バージョン 3.4 では、 orよりもはるかに優れたフックが導入されましたwoocommerce_thankyou_bacs
。これにより、BACS 支払い方法のデフォルトの注文ステータスを変更できます。
このフックを使用すると、次のようになります。
- 必要なコードを明確に軽量化し、
- BACS の注文時に顧客に「保留中」の通知を行わないようにします。
したがって、代わりに次を使用します。
add_filter( 'woocommerce_bacs_process_payment_order_status','filter_bacs_process_payment_order_status_callback', 10, 2 );
function filter_bacs_process_payment_order_status_callback( $status, $order ) {
return 'processing';
}
コードは、アクティブな子テーマ (またはアクティブなテーマ) の functions.php ファイルに入ります。テスト済みで動作します。
元の答え:
更新 (最後に woocommerce 3+ 用のバージョンを追加)
woocommerce_payment_complete_order_status
BACS決済でアクションフックが発動しないようです。
このスレッドに基づいて、'woocommerce_thankyou'
アクション フックが次のように機能します。
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;
}
// Get an instance of the WC_Order object
$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;
}
}
コードは、アクティブな子テーマ (またはアクティブなテーマ) の function.php ファイルに入ります。テスト済みで動作します。
woocommerce 3+ バージョンの場合:
ここでは、同様の複合フックを使用しますwoocommerce_thankyou_{$order->get_payment_method()}
。
add_action( 'woocommerce_thankyou_bacs', 'bacs_order_payment_processing_order_status', 10, 1 );
function bacs_order_payment_processing_order_status( $order_id ) {
if ( ! $order_id ) {
return;
}
// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );
if ( in_array( $order->get_status(), array('on-hold', 'pending') ) ) {
$order->update_status('processing');
} else {
return;
}
}
コードは、アクティブな子テーマ (またはアクティブなテーマ) の function.php ファイルに入ります。テスト済みで動作します。