Wdrożenie Omnibusa w sklepie na WooCommerce (kurs)

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 webinsider_woocommerce_add_attachments_to_order_email( $attachment, $status, $order ) {

	$order_status_with_attachments = array( 'customer_completed_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', 'webinsider_woocommerce_add_attachments_to_order_email', 10, 3 );

Mamy tu funkcję „webinsider_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_completed_order” (potwierdzenie realizacji zamówienia dla klienta) – dodaje wskazany załącznik (regulamin.pdf) znajdujący się w katalogu naszego szablonu (szablon potomny/child theme).

Obsługa nowych wersji WordPress i WooCommerce
Wprawdzie artykuł ma już kilka lat, to kod został przetestowany z WooCommerce 6.2 i WordPress 5.9 (działa prawidłowo).

Oczywiście skrypt można zmodyfikować, zależnie od 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 webinsider_woocommerce_add_attachments_to_order_email( $attachment, $status, $order ) {
    
    $order_status_with_attachments = array( 'customer_completed_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', 'webinsider_woocommerce_add_attachments_to_order_email', 10, 3 );
Wdrożenie Omnibusa w WooCommerce

Tematy praktycznego wdrożenia tzw. Omnibusa w sklepie internetowym opartym o WooCommerce poruszamy również w naszym kursie internetowym „Wdrożenie Omnibusa w WooCommerce”, w którym znajdziesz nie tylko konkretne informacje, w tym gotowe do zastosowania kody, ale również gotowe wtyczki do zainstalowania. Kliknij i sprawdź szczegóły…

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

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

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

function webinsider_woocommerce_add_attachments_to_order_email( $attachment, $status, $order ) {
    
    $order_status_with_attachments = array( 'customer_completed_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', 'webinsider_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. 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 różnych statusów – ale to już zależy od Waszych potrzeb… ;-)

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Wdrożenie Omnibusa w sklepie na WooCommerce (kurs)
Patryk
Wdrożenie Omnibusa w sklepie na WooCommerce (kurs)