Tag: #bezkonsekwencji

Automatyczne dodawanie załącznika do wiadomości e-mail z potwierdzeniem zamówienia w WooCommece (WordPress)

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

Loading

Reklama własna

Z księgowością internetową wFirma JPK_VAT to nie problem!

Reklama własna

Z księgowością internetową wFirma JPK_VAT to nie problem!

Reklama własna

Z księgowością internetową wFirma JPK_VAT to nie problem!