Cum să declanșezi manual email-ul de comandă finalizată în WooCommerce?

18 apr. 2015, 22:09:23
Vizualizări: 28.3K
Voturi: 12

Doresc să pot declanșa email-ul de comandă finalizată din WooCommerce într-o etapă diferită a procesului de checkout. Așadar, am dezactivat email-ul de comandă finalizată din backend și acum caut o linie de cod care să declanșeze email-ul în momentul dorit. Am făcut câteva cercetări și am găsit cum să elimin email-ul de comandă finalizată, dar nu cum să-l declanșez manual. Aveți sugestii?

Mulțumesc!

0
Toate răspunsurile la întrebare 3
1
18

Puteți încerca acest lucru

$mailer = WC()->mailer(); // Obține obiectul mailer WooCommerce
$mails = $mailer->get_emails(); // Obține toate email-urile disponibile
if ( ! empty( $mails ) ) { // Verifică dacă există email-uri
    foreach ( $mails as $mail ) { // Iterează prin fiecare email
        if ( $mail->id == 'customer_completed_order' ) { // Verifică dacă este email-ul pentru comanda finalizată
           $mail->trigger( $order->id ); // Declanșează trimiterea email-ului pentru ID-ul comenzii
        }
     }
}
19 apr. 2015 00:06:39
Comentarii

Mulțumesc. Există vreo modalitate de a asigura că cineva nu va abuza de asta, adică dacă pun acel cod într-un loc specific pe pagina de mulțumire, există vreo metodă ca email-ul să nu fie trimis de fiecare dată când o persoană reîmprospătează pagina?

user3210369 user3210369
20 apr. 2015 06:51:16
2

În loc să folosești o buclă sau să reutilizezi același obiect așa cum a sugerat @Sumit. Poți iniția un obiect nou și apoi să apelezi trigger-ul.

$email_oc = new WC_Email_Customer_Completed_Order();
$email_oc->trigger($order_id);
20 sept. 2018 06:50:53
Comentarii

Dacă aceasta este o clasă implicită WP pentru comenzi, atunci da... dacă este personalizată, va fi adăugată folosind filtrul woocommerce_email_classes, prin urmare clasa de email personalizată poate să nu fie disponibilă la cerere.

Ramon Fincken Ramon Fincken
14 mai 2021 16:25:38

@RamonFincken aceasta se află în nucleul WooCommerce

GeorgeP GeorgeP
9 feb. 2024 02:45:14
0

De asemenea, poate fi folosit astfel;

WC()->mailer()->emails['WC_Email_Customer_Completed_Order']->trigger( $order_id );
11 iul. 2021 14:38:41