WooCommerceの注文完了メールをトリガーする方法は?


10

WooCommerceチェックアウトプロセスの別の段階でWooCommerce注文完了メールをトリガーできるようにしたいのですが。そのため、バックエンドからのWooCommerce注文完了メールを無効にし、希望する時点でメールをトリガーするコード行を探しています。少し調べたところ、注文完了メールを削除する方法はわかりましたが、手動でトリガーする方法はわかりませんでした。任意のヒント?

ありがとう!

回答:


11

あなたはこれを試すことができます

$mailer = WC()->mailer();
$mails = $mailer->get_emails();
if ( ! empty( $mails ) ) {
    foreach ( $mails as $mail ) {
        if ( $mail->id == 'customer_completed_order' ) {
           $mail->trigger( $order->id );
        }
     }
}

ありがとうございました。誰かがそれを悪用しないようにする方法はあります。つまり、それをお礼ページの特定の場所に投げ込んだ場合、人がページを更新するたびにメールを送信しない方法はありますか?
user3210369

プラグインはフックでメールを送信するだけなので、WooCommerceはこのことを処理します。しかし、お礼のページでそれを送信しているので、これに注意する必要があります。ユーザーのメタにメタ値を追加したり、ブラウザにCookieを保存したりできます。現在の仕事と同じように、この回答を承認済みとしてマークしてください。
Sumit

4

@Sumitによって提案された同じオブジェクトをループまたは再利用するのではなく。新しいオブジェクトを開始して、トリガーを呼び出すことができます。

$email_oc = new WC_Email_Customer_Completed_Order();
$email_oc->trigger($order_id);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.