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

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

| Olvasási idő: 2 perc

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: 

php
<?php
/*
Plugin Name: WooCommerce notifications for custom order status
Plugin URI: https://www.webmenedzser.hu
Description: Add notifications for custom order status changes
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPLv3
*/

function send_manufacturing_email_to_boss($order_id) {
    $subject = 'Gyártás elkezdve [#' . $order_id . ']';
    $message = 'Helló Főni! Elkezdtük a ' . $order_id . '. azonosítójú rendelés gyártását.';

    wp_mail( '[email protected]', $subject, $message );
}
add_action( 'woocommerce_order_status_manufacturing', 'send_manufacturing_email_to_boss', 10, 1);

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: 

php
<?php
/*
Plugin Name: WooCommerce notifications for custom order status
Plugin URI: https://www.webmenedzser.hu
Description: Add notifications for custom order status changes
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPLv3
*/

function send_manufacturing_email_to_customer($order_id, $order) {
    $subject = 'Gyártás elkezdve [#' . $order_id . ']';
    $message = $order_id . '. azonosítójú rendelésében foglalt termékek gyártása megkezdődött.';

    wp_mail( $order->get_billing_email(), $subject, $message );
}
add_action( 'woocommerce_order_status_manufacturing', 'send_manufacturing_email_to_customer', 10, 2);

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: 

php
<?php
/*
Plugin Name: WooCommerce notifications for custom order status
Plugin URI: https://www.webmenedzser.hu
Description: Add notifications for custom order status changes
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPLv3
*/

function send_manufacturing_email_to_boss($order_id) {
    $subject = 'Gyártás elkezdve [#' . $order_id . ']';
    $message = 'Helló Főni! Elkezdtük a ' . $order_id . '. azonosítójú rendelés gyártását.';

    wp_mail( '[email protected]', $subject, $message );
}
add_action( 'woocommerce_order_status_manufacturing', 'send_manufacturing_email_to_boss', 10, 1);

function send_manufacturing_email_to_customer($order_id, $order) {
    $subject = 'Gyártás elkezdve [#' . $order_id . ']';
    $message = $order_id . '. azonosítójú rendelésében foglalt termékek gyártása megkezdődött.';

    wp_mail( $order->get_billing_email(), $subject, $message );
}
add_action( 'woocommerce_order_status_manufacturing', 'send_manufacturing_email_to_customer', 10, 2);

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!