Wyłączenie e-mail w WooCommerce dla bezpłatnych zamówień

Życie programisty to pasmo niespodzianek. Teoretycznie myślimy, że o danej platformie wiemy już absolutnie wszystko i nagle zaskakuje nas coś co właściwie powinniśmy przewidzieć już dawno temu.

Historia pewnego klienta…

Inspiracją do tego wpisu była historia klienta, któremu stworzyłem małą platformę e-learningową opartą o WooCommerce, na której stworzono kilka bezpłatnych kursów. Głównym założeniem portalu było zbieranie Leadów od potencjalnych klientów, a kursy pozwalały łatwo segmentować klientów od początkujących po już zaawansowanych w danym temacie.

Klient uruchomił szeroką akcję promocyjną, która przerosła oczekiwania i otrzymywał setki emaili z WooCommerce, które nie tylko zapchały skrzynkę, ale też w pewnym momencie zablokowały wysyłkę maili na serwerze z powodu przekroczenia limitów.

Usunięcie ceny „Za Darmo” w WooCommerce

Czas zrozumieć problem…

WooCommerce już taki jest – wysyła maile do klienta i to, aż dwa – potwierdzenie zamówienia i założenie konta, a informacje o zamówieniu otrzymuje też administrator. Oznacza to, że każde zamówienie generuje trzy maile, które w zasadzie (poza mailem do klienta i to nie zawsze) są absolutnie zbędne.

Oczywiście możemy w WooCommerce wyłączyć ten email poprzez opcje powiadomień emailowych, ale w przypadku gdy mamy też produkty płatne może okazać się to niekoniecznie dobym rozwiązaniem i stąd dzisiejszy wpis.

Wyłączenie wysyłania e-maila o otrzymaniu bezpłatnego zamówienia w WooCommerce do Administratora 

Dodaj ten kod do pliku functions.php najlepiej motywu potomnego lub wtyczki funkcyjnej.

Funkcja wyłączy wysyłanie wiadomości e-mail do administratora z potwierdzeniem otrzymania zamówienia.

add_filter('woocommerce_email_enabled_new_order', function($enabled, $order) {
    if ($order instanceof WC_Order) {
        $order_total = floatval($order->get_total());
        if ($order_total == 0) {
            return false;
        }
    }
    return $enabled;
}, 10, 2);

Wyłączenie wysyłania potwierdzenie otrzymania bezpłatnego zamówienia dla klienta 

W moim przypadku blokada była zasadna ponieważ całą wysyłkę emailową obsługiwał system Marketing Automation i nie potrzebowałem dodatkowych wiadomości od WooCommerce. W tym celu aplikujemy swoją funkcję jako filtr do hooka – woocommerce_email_recipient_customer_completed_order.

add_filter( 'woocommerce_email_recipient_customer_completed_order', 'jcz_bezmaila_woo_zerozl', 10, 2 );
function jcz_bezmaila_woo_zerozl( $recipient, $order ) {
    $page = $_GET['page'] = isset( $_GET['page'] ) ? $_GET['page'] : '';
    if ( 'wc-settings' === $page ) {
        return $recipient;
    }
    if ( (float) $order->get_total() === '0.00' ) $recipient = '';
    return $recipient;
}

Tym oto sposobem zbędne dwie wiadomości nie będą już wysyłanie ani do Ciebie, ani do klienta.

Oceń ten artykuł jako pierwszy
dHosting najlepszy serwer dla wordpress i nie tylko

Na stronie mogą znajdować się linki polecające (affiliacyjne), które pozwalają utrzymać bloga. Zakup z mojego polecenia nie generuje dla Ciebie dodatkowych kosztów, a ja otrzymam prowizje od kwoty zapłaconej.

Przyłącz się do dyskusji