Woocommerceの注文ステータス「処理中」→「保留中」でメールが自動送信される様にカスタマイズした件

Woocommerceで受注を開始するにあたり、注文ステータスごとの自動返信メールを見直していましたのですが、「処理中」→「保留中」にステータス変更した際に自動メールが送信されないというトラブルが起こったので、function.phpを編集して自動送信される様にカスタマイズしたというお話です。

Woocommerceにおける注文ステータス

ステータス名 英語
支払い待ち Pending payment
処理中 Processing
保留中 On hold
完了 Completed
キャンセル済み Cencelled
払い戻し Refunded
失敗 Failed

ステータスは基本的に「処理中」から開始されます。Paypalでの支払エラーなどの場合を除き、「支払い待ち」になることはほどんど無い様です。通常のECサイトの場合は、「処理中」→「完了」と進むのでしょうか。

Woocommerceには「発送待ち(在庫確保)」にあたるステータスが無い

ECサイトの場合、受注作業の流れとしては、「入金済み」→「発送待ち(在庫確保)」→「発送済み(注文完了)と進みますよね。Woocommerceにはこの「発送待ち(在庫確保)」に当たるステータスが無い様に感じます。「保留中」ステータスがありますが、ステータスを「保留中」に変更した際に送信されるメッセージに掲載されるメッセージは以下の通りで、支払いがまだ済んでいないことを想定された内容であることが分かります。

Thanks for your order. It’s on-hold until we confirm that payment has been received. In the meantime, here’s a reminder of what you ordered:

僕は在庫が確保できた段階で自動メールを送信したいので、この「保留中」ステータスを在庫確保の扱いにし、woocommerceにおける注文処理を「処理中」→「保留中」→「完了」とすることにしました。

「処理中」から「保留中」に変更する際にメールが送信されない

ここで問題が出てきました。テスト注文でステータスを「処理中」から「保留中」に変更してみるのですが、一向にメッセージが送信されません。調べてみたところ、woocommerce側の仕様で「処理中」から「保留中」に変更した場合はメールが自動送信されないとなっている様です。

ページはこちら
Order status "On Hold" not sending email alerts #20563

上記のページによると「保留中」にステータス変更した時にメッセージが自動送信されるのは、その前のステータスが「支払い待ち」「失敗」「キャンセル済み」いずれかの場合であった時のみ
ということです。道理でメッセージが送られない訳だ!

自動メールが送られる様にfunction.phpを修正

上記githubのページに出てきたソースをカスタマイズしてみました。
以下のコードをfunction.phpに追加します。

function add_another_email_action( $array ) {
  $array[]='woocommerce_order_status_processing_to_on-hold';
  return $array;
}

add_action( 'woocommerce_email', 'hook_another_email_on_hold' );
function hook_another_email_on_hold( $email_class ) {
  add_action( 'woocommerce_order_status_processing_to_on-hold_notification', array( $email_class->emails['WC_Email_Customer_On_Hold_Order'], 'trigger' ) );
}

本当はプラグインを使って解決出来たのかもしれませんが、極力プラグインは増やさないでおこうということで、今回はマニュアル対応しました。
変更を加えて再度テスト注文ならびにステータス変更を行ったところ、、、「処理中」から「保留中」に変更した際に、無事自動メールが送られる様にしました!!これで「処理中」→「保留中」→「完了」で受注処理が出来ます。

ということで問題が解決しました。同じ様なパターンで悩まれている方もいらっしゃるかも知れません。参考になれば幸いです。

(僕の場合は上記のコードで上手くいきましたが、使われる方は自己責任でお願いします!)

1 COMMENT

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です