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… ;-)

(!) Zgłoś błąd na stronie
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.
Roztańczona Karolina dzięki motywowi Divi od Elegant Themes właśnie skończyła pierwszą stronę
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.
Janusz i Janusz dzięki motywowi Divi od Elegant Themes koszą siano robiąc strony