Tak jak napisałem wczoraj – w związku z nadchodzącymi zmianami związanymi z nową ustawą o prawach konsumenta, która zacznie obowiązywać m.in. sklepy internetowe już w czwartek (25 grudnia) w kilka sklepach przygotowujemy zmiany z tym związane.

Jedną z takich zmian jest automatyczne dołączanie do wiadomości e-mail potwierdzających zakup regulaminu sklepu, oraz formularza odstąpienia od umowy wraz z pouczeniem (pliki PDF).

A z racji tego, że ostatnio sklepy internetowe uruchamiamy głównie na platformie WooCommerce (WordPress), to dziś chciałbym przedstawić, jak właśnie w sklepie internetowym opartym o tą platformę wykonać takie zadanie…

WooCommece (WordPress) i dodawanie załącznika do automatycznych wiadomości

Jeśli ktoś z Was do tej pory nie dodawał nigdy „własnego kodu” do WordPressa, to odsyłam do wczorajszego wpisu – dziś przejdziemy od razu do sedna, czyli kodu:


function pryc_woocommerce_add_attachments_to_order_email($attachment,$status,$order) {

	$order_status_with_attachments = array('customer_processing_order');

	if (isset($status) && in_array($status,$order_status_with_attachments)) {
		$attachment01_path = get_stylesheet_directory().'/regulamin.pdf';
		$attachments[] = $attachment01_path;
	}

	return $attachments;
}

add_filter('woocommerce_email_attachments','pryc_woocommerce_add_attachments_to_order_email',10,3);

Mamy tu funkcję „pryc_woocommerce_add_attachments_to_order_email()”, która jest wykonywana w momencie tworzenia przez WooCommerce/WordPress wiadomości e-mail. Funkcja ta, dla wybranych statusów – w naszym przypadku „customer_processing_order” (potwierdzenie zamówienia dla klienta) – dodaje wskazany załącznik (regulamin.pdf) znajdujący się w katalogu naszego szablonu (szablon potomny/child theme).

Oczywiście skrypt można zmodyfikować, zależnie od naszych potrzeb:

Więcej załączników

Jeśli potrzebujemy dodać więcej niż jeden załącznik, wystarczy zdublować ten fragment kodu:

$attachment01_path = get_stylesheet_directory().'/regulamin.pdf';
$attachments[] = $attachment01_path;

modyfikując go wedle potrzeb:

$attachment02_path = get_stylesheet_directory().'/jakiś-inny-plik.pdf';
$attachments[] = $attachment02_path;

$attachment03_path = get_stylesheet_directory().'/i-jeszcze-jeden-plik.pdf';
$attachments[] = $attachment03_path;

W efekcie otrzymamy coś takiego:

function pryc_woocommerce_add_attachments_to_order_email($attachment,$status,$order) {
    
    $order_status_with_attachments = array('customer_processing_order');

    if (isset($status) && in_array($status,$order_status_with_attachments)) {
        $attachment01_path = get_stylesheet_directory().'/regulamin.pdf';
        $attachments[] = $attachment01_path;
    
        $attachment02_path = get_stylesheet_directory().'/jakiś-inny-plik.pdf';
        $attachments[] = $attachment02_path;

        $attachment03_path = get_stylesheet_directory().'/i-jeszcze-jeden-plik.pdf';
        $attachments[] = $attachment03_path;
    
    }
    
    return $attachments;
}

add_filter('woocommerce_email_attachments','pryc_woocommerce_add_attachments_to_order_email',10,3);

Inna ścieżka pliku

Kolejną modyfikacją jest zmiana ścieżki/adresy pliku – w podanym przykładzie korzystamy ze ścieżki naszego szablonu, a konkretnie pliku style.css (get_stylesheet_directory()).

Można tu oczywiście wstawić dowolną ścieżkę, choć musi to być ścieżka bezwzględna, w formacie systemowym (Linux), np.:

/var/www/webinsider.pl/public_html/wp-content/uploads/regulamin.pdf

Natomiast nie zadziała ścieżka „internetowa”, np.:

//webinsider.pl/wp-content/uploads/regulamin.pdf

I przykład kodu ze zmienioną ścieżką, jak w przykładzie powyżej:

function pryc_woocommerce_add_attachments_to_order_email($attachment,$status,$order) {
    
    $order_status_with_attachments = array('customer_processing_order');

    if (isset($status) && in_array($status,$order_status_with_attachments)) {
        $attachment01_path = '/var/www/webinsider.pl/public_html/wp-content/uploads/regulamin.pdf';
        $attachments[] = $attachment01_path;
    
    }
    
    return $attachments;
}

add_filter('woocommerce_email_attachments','pryc_woocommerce_add_attachments_to_order_email',10,3);

Załączniki do wiadomości dla innych statusów

W naszym przykładzie załącznik dodajemy do pierwszej wiadomości jaką otrzymuje klient, czyli z potwierdzeniem zamówienia. Odpowiada za to status „customer_processing_order”.

Oczywiście nie ma przeszkód by wykorzystać podaną metodę dla innych statusów, np.:

  • new_order – wiadomość dla obsługi sklepu o nowym zamówieniu
  • customer_completed_order – wiadomość dla klienta o gotowym zamówieniu

Wystarczy zmodyfikować jedną linijkę wg schematu:

$order_status_with_attachments = array('order_status01','order_status02','order_status03');

Oczywiście można kod rozbudować, o różne załączniki dla rożnych statusów – ale to już zależy od Waszych potrzeb… ;-)

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Monika ćwiczy przed kongresem ko..., ale dzięki motywowa Divi od Elegant Themes chyba nawet ona da radę...
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Na WebInsider.pl korzystamy z motywu Extra od Elegant Themes. Zobacz dlaczego...