2019. 05. 13.
frissítve: 2022. 05. 15.
Olvasási idő: 8 perc
Plugout

E-mail értesítés küldése WooCommerce rendelés állapotváltozása esetén

Szóval vannak egyedi WooCommerce rendelés státuszaid, de még jobb lenne, ha automatikusan kapnál értesítést az állapotváltozásról, vagy menne az e-mail a vásárlónak?


Mivel a WooCommerce az új rendelés állapotokat nem "csatornázza be" az e-mailes beállítások felületére, ezért a kimenő leveleket nem tudjuk testreszabni. Sőt, ami azt illeti: nincsenek is kimenő levelek az egyedileg létrehozott rendelés státuszoknál, amíg mi nem intézkedünk.

Hozzuk tehát létre az add_woocommerce_custom_order_status_notifications.php fájlt az mu-plugins mappában, az alábbi tartalommal:

Ahogy látod, a fenti kód automatikusan küld egy e-mailt a főnöknek (ez látszik az e-mail címből is ;)), amikor egy-egy rendelés termékeit gyártani kezdik. De mi van akkor, ha a vásárlónak is szeretnénk értesítést küldeni? Ebben az esetben hozzá kellene férnünk a rendeléshez tartozó felhasználó e-mail címéhez is - aggodalomra semmi ok, hiszen az értesítő function-t meghívó függvény az $order-t is átadja, második paraméterként, az értesítő függvénynek, tehát az alábbi kód alkalmas lesz a célunk elérésére:

Itt két fontos változás van: az egyik, hogy az $order_id mellett az $order is megjelenik a function szignatúrájában, a másik pedig, hogy az add_action-nél az utolsó paraméter 1 helyett 2 lesz. Ez utóbbi jelzi azt, hogy a meghívott function (send_manufacturing_email_to_customer) mennyi paramétert vár.

Szuper, eddig minden működött automágikusan, de a legfontosabbról még nem is beszéltünk: hogyan fogja tudni a WooCommerce, hogy mikor melyik függvényt kell meghívnia? Az add_action első paraméteréből, méghozzá annak a végéből: a woocommerce_order_status_manufacturing utolsó tagja (ebben az esetben a manufacturing) meg kell, hogy egyezzen a figyelni kívánt státusz wc- utáni részével. Tehát ha a státusz, amin valamit csinálni szeretnénk (mondjuk levelet küldeni) wc-yoloing, akkor az add_action első paramétere woocommerce_order_status_yoloing lesz.

A két fenti kódrészlet össze is kombinálható (tehát megy egy e-mail a főninek és egy a vásárlónak), az alábbi formában:

Hát ezzel is megvagyunk: azon túl, hogy van egyedi rendelés állapotunk, most már van egyedi rendelés állapotról szóló e-mailes értesítésünk is - jók vagyunk, na! :)

Kérdésed, témajavaslatod van? Írj bátran!