ホームページ >バックエンド開発 >PHPチュートリアル >特定の支払い方法で WooCommerce の注文完了を自動化するにはどうすればよいですか?
特定の支払い方法に対する WooCommerce での有料注文のオートコンプリート
WooCommerce は通常、仮想商品の注文をオートコンプリートします。ただし、「銀行振込」、「代金引換」、「小切手」などの特定の支払い方法では、条件付きアプローチが必要です。
woocommerce_payment_complete_order_status フィルター フック
この問題の最適な解決策は、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) { // Check if the payment method is not "Bank wire," "Cash on delivery," or "Cheque." if (!in_array($order->get_payment_method(), array('bacs', 'cod', 'cheque'))) { // If not, change the order status to "completed." return 'completed'; } // Otherwise, do not modify the order status. return $status; }
このフィルター フックを使用すると、複数の通知をトリガーすることなく、支払い方法に基づいて有料注文のステータスを効果的かつ正確に更新できます。
代替手段
コード スニペット:
対象とする支払い方法が、以下の支払い方法に限定されている場合デフォルトではオートコンプリートをトリガーしません (「銀行振込」、「代金引換」、および「小切手」)。次のコード:
add_action('woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1); function custom_woocommerce_auto_complete_paid_order($order_id) { $order = wc_get_order($order_id); // Check if the payment method is not "Bank wire," "Cash on delivery," or "Cheque." if (!in_array($order->get_payment_method(), array('bacs', 'cod', 'cheque'))) { // If not, update the order status to "completed." $order->update_status('completed'); } }
プラグイン:
「WooCommerce Autocomplete Orders」プラグインは、特定の支払い方法に対するソリューションを提供することもできます。ただし、特定のクレジット カード ゲートウェイでは機能しない場合があります。
以上が特定の支払い方法で WooCommerce の注文完了を自動化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。