ホームページ >バックエンド開発 >PHPチュートリアル >特定の支払い方法で WooCommerce の注文完了を自動化するにはどうすればよいですか?
WooCommerce の注文自動完了の制限を克服する
通常、WooCommerce は仮想商品の注文の完了を自動化します。ただし、「銀行振込」「代金引換」「小切手」などのお支払い方法では、この機能をご利用できない場合があります。この問題に対処し、支払い方法に基づいて注文のオートコンプリートを条件付きで適用するには、次の解決策を実装できます。
woocommerce_payment_complete_order_status フィルター フックを使用する
このフィルター フックは、次の場合にトリガーされます。支払いはチェックアウト時に必要であり、すべての支払い方法で使用されます。許可されている有料注文ステータスを変更することで、条件付きオートコンプリートを実現できます。
add_filter( 'woocommerce_payment_complete_order_status', 'wc_auto_complete_paid_order', 10, 3 ); function wc_auto_complete_paid_order( $status, $order_id, $order ) { return 'completed'; }
woocommerce_thankyou アクション フックを利用する
WooCommerce バージョン 3 以降の場合、次のコードできる使用:
add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 ); function wc_auto_complete_paid_order( $order_id ) { if ( ! $order_id ) return; $order = wc_get_order( $order_id ); if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) { return; } else { $order->update_status( 'completed' ); } }
元のソリューション
すべての WooCommerce バージョンで、次のコードを使用できます:
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 ); function custom_woocommerce_auto_complete_paid_order( $order_id ) { if ( ! $order_id ) return; $order = wc_get_order( $order_id ); if ( 'bacs' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cod' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cheque' == get_post_meta($order_id, '_payment_method', true) ) ) { return; } elseif( $order->get_status() === 'processing' ) { $order->update_status( 'completed' ); } }
これらのソリューションは条件付きを提供します指定された支払い方法に基づく有料注文の注文オートコンプリートにより、さまざまな支払い方法を受け入れる WooCommerce ストアでの効率的かつ正確な注文処理が保証されます。支払いオプション。
以上が特定の支払い方法で WooCommerce の注文完了を自動化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。