WooCommerce, prin natura sa, trimite automat notificări prin email pentru anumite acțiuni ale comenzilor, cum ar fi finalizarea acestora sau schimbarea statutului. Totuși, uneori este necesar să personalizăm aceste notificări, de exemplu, pentru a trimite notificări suplimentare atunci când o comandă este anulată sau dacă plata a eșuat.
În acest articol, îți voi arăta cum să implementezi o funcție personalizată în WooCommerce care trimite notificări prin email atunci când o comandă este anulată sau eșuează. Vom folosi un hook (add_action
) pentru a asculta schimbările statutului comenzilor și vom trimite emailuri în consecință.
Codul pentru a trimite notificări prin email la anularea sau eșuarea unei comenzi
Pentru a trimite notificări personalizate, folosește următorul cod PHP:
<?php
add_action('woocommerce_order_status_changed', 'send_cancelled_email_notifications', 10, 4 );
function send_cancelled_email_notifications( $order_id, $old_status, $new_status, $order ){
if ( $new_status == 'cancelled' || $new_status == 'failed' ){
$wc_emails = WC()->mailer()->get_emails(); // Get all WC_emails objects instances
$customer_email = $order->get_billing_email(); // Get the customer email
}
if ( $new_status == 'cancelled' ) {
// change the recipient of the instance
$wc_emails['WC_Email_Cancelled_Order']->recipient = $customer_email;
// Sending the email from this instance
$wc_emails['WC_Email_Cancelled_Order']->trigger( $order_id );
}
elseif ( $new_status == 'failed' ) {
// change the recipient of the instance
$wc_emails['WC_Email_Failed_Order']->recipient = $customer_email;
// Sending the email from this instance
$wc_emails['WC_Email_Failed_Order']->trigger( $order_id );
}
}
Cum funcționează acest cod?
- Acțiunea
woocommerce_order_status_changed
:- Aceasta ascultă schimbările de statut ale comenzilor în WooCommerce. În momentul în care o comandă își schimbă statusul (de exemplu, din „în procesare” în „anulată” sau „eșuată”), funcția
send_cancelled_email_notifications
va fi apelată.
- Aceasta ascultă schimbările de statut ale comenzilor în WooCommerce. În momentul în care o comandă își schimbă statusul (de exemplu, din „în procesare” în „anulată” sau „eșuată”), funcția
- Verificarea statutului comenzii:
- În funcția
send_cancelled_email_notifications
, verificăm dacă noua stare a comenzii este „cancelled” (anulată) sau „failed” (eșuată). Dacă este cazul, continuăm să gestionăm trimiterea emailului corespunzător.
- În funcția
- Obținerea obiectelor de email WooCommerce:
WC()->mailer()->get_emails()
obține toate instanțele de emailuri disponibile în WooCommerce. Aici,WC_Email_Cancelled_Order
șiWC_Email_Failed_Order
sunt clasele care definesc emailurile trimise pentru comenzile anulate și pentru comenzile eșuate.
- Obținerea emailului clientului:
get_billing_email()
este folosit pentru a obține adresa de email a clientului asociată comenzii respective.
- Trimiterea emailului:
- Dacă comanda este anulată, se trimite emailul definit de clasa
WC_Email_Cancelled_Order
. - Dacă comanda eșuează, se trimite emailul definit de clasa
WC_Email_Failed_Order
.
- Dacă comanda este anulată, se trimite emailul definit de clasa
- Schimbarea destinatarului:
- Înainte de a trimite emailul, codul schimbă destinatarul emailului, astfel încât acesta să fie trimis la adresa de email a clientului, nu la administratorul magazinului.
Cum să implementezi acest cod:
- Adăugarea codului în fișierul
functions.php
:- Mergi la Aparanță > Editor de teme.
- Selectează tema activă și deschide fișierul
functions.php
. - Lipește codul de mai sus la sfârșitul fișierului și salvează.
- Testarea funcționalității:
- Creează o comandă de test în WooCommerce și modifică statusul acesteia la „anulată” sau „eșuată”.
- Verifică inbox-ul clientului pentru a te asigura că notificările au fost trimise corect.
Posibile îmbunătățiri
- Personalizare suplimentară: Poți personaliza mai mult conținutul emailurilor trimise, de exemplu, prin adăugarea unui mesaj personalizat sau a unui subiect diferit pentru fiecare caz în parte.
- Adăugarea unui mesaj pentru administrator: Dacă dorești, poți adăuga și un email pentru administrator atunci când o comandă este anulată sau eșuată, pentru a-l informa despre aceste modificări.
Concluzie
Folosind acest cod, poți personaliza notificările prin email trimise atunci când o comandă WooCommerce este anulată sau eșuează, îmbunătățind astfel comunicarea cu clienții. De asemenea, acest tip de personalizare poate fi extins și pentru alte stări ale comenzii sau pentru alte notificări, în funcție de nevoile magazinului tău online.