Как вызвать WooCommerce заказать полную электронную почту?

10

Я хочу иметь возможность инициировать полную электронную почту заказа WooCommerce на другом этапе процесса оформления заказа WooCommerce. Поэтому я отключил WooCommerce полный заказ электронной почты из бэкэнда и теперь ищу строку кода, которая вызовет письмо в нужной точке. Я провел небольшое исследование и обнаружил, как удалить электронную почту заказа полностью, а не как вызвать ее вручную. Какие-нибудь советы?

Спасибо!

user3210369
источник

Ответы:

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 );
        }
     }
}
Sumit
источник
Спасибо. Любой способ убедиться, что кто-то не злоупотребляет этим, например, если я добавлю это в определенное место на странице спасибо, есть ли способ не отправлять электронное письмо каждый раз, когда человек обновляет страницу?
user3210369
WooCommerce позаботится об этом, так как плагин отправляет электронную почту только на крючки. Но вы отправляете его на страницу благодарности, тогда вам нужно позаботиться об этом, вы можете добавить некоторую мета-ценность к мета-метке пользователя или сохранить некоторые куки в его / ее браузере. и, пожалуйста, отметьте этот ответ как принятый, поскольку он выполняет вашу текущую работу.
Sumit
4

Вместо того, чтобы зацикливаться или повторно использовать тот же объект, как предложено @Sumit. Вы можете инициировать новый объект и затем вызвать триггер.

$email_oc = new WC_Email_Customer_Completed_Order();
$email_oc->trigger($order_id);
Картик Тайиль
источник