# Wyłączenie e-mail w&nbsp;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.

![](https://jaworowi.cz/wp-content/uploads/2016/11/wordpress-przekierowanie-z-tagu-kategorii.png)
**Usunięcie ceny „Za Darmo” w WooCommerce**

[Przeczytaj artykuł](https://jaworowi.cz/jak-usun-cen-za-darmo-woocommerce-wordpress-2777.php)

**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.

Zobacz Również:
[Jak dodać własne kody PHP, JS, CSS i funkcje w WordPress?](https://jaworowi.cz/wlasne-kody-wordpress-16834.php)

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.
