バーチャル商品で決済完了後に自動的に完了にならない理由
バーチャル商品でかつダウンロード商品の場合はコアで決済が完了すると自動的にステータスは完了になるのですが、バーチャル商品だけの購入の場合は自動的に完了にはなりません。
何故、そのような仕様になっているかというと、バーチャル商品の中にはサービスなども含まれるからです。WooCommerceでは様々な商材を利用する事ができます。バーチャル商品いえば、宿泊権利だったりサロンの予約などです。こういうバーチャル商品は購入後にすぐに完了になるわけではありません。なので、処理中に留める形になっているのです。
しかし、最近では、コンテンツ販売などがオンラインでは増えており、この場合は購入後自動的に完了にして欲しいです。
その場合の方法を説明します。
お勧めでは無い方法
Chat GPT で調べてみると [woocommerce_order_status_processing] のアクションフックを使うことを説明してきます。実際にこのフックを使って対応する方法もありますが、注文メモがちょっと変な感じになります。
注文メモが「注文ステータスを支払い待ちから完了に変更しました。」を登録した後に「注文ステータスを支払い待ちから処理中に変更しました。」が登録されてしまいます。ステータス自体はしっかりと完了になるので、これもアリはアリなのですが、システム的には変ですよね。なので、別の方法を探したほうがいいと思います。
そもそも、コードリーディングをしたら分かりますが、[woocommerce_order_status_processing]アクションフックはstatus_transition()関数の中に入っています。しかも、このフックの後に注文メモの入力処理が入るので上記のようなちょっと気持ち悪い処理になってしまうのです。
そもそも、バーチャル商品でかつダウンロード商品の場合はコアで決済が完了できるようになっているので、この部分を利用した方がいいです。
ここから先の内容を読みたい方はJapanized for WooCommerce Proをご購入ください。