Első körben kezdjük a szokásossal: hozzunk létre egy fájlt (add-attachments-to-order-emails.php
) az mu-plugins mappában, az alábbi tartalommal:

ÁSZF és Adatkezelési nyilatkozat automatikus csatolása a WooCommerce rendelési e-mailekhez
Gyakran ismételt kérdés az, hogy hogyan lehet automatikusan mellékelni egy vagy több fájlt a rendelés visszaigazoló e-mailhez, mert például a vásárlónak el szeretnénk küldeni az ÁSZF-ünket, vagy valamilyen más dokumentumot. Léteznek fizetős pluginek (pl. kapásból találtam egyet 54 euróért), amelyek ezt megoldják, de nézzük meg, hogy meg tudjuk-e oldani ezt mi, plugin nélkül? Spoiler: igen.
<?php
/*
Plugin Name: Attachment to order e-mail
Plugin URI: https://www.webmenedzser.hu
Description: Add attachments to order e-mail
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPLv3
*/
function attach_terms_conditions_pdf_to_email ( $attachments, $status , $order ) {
$allowed_statuses = array( 'customer_on_hold_order' );
if( isset( $status ) && in_array ( $status, $allowed_statuses ) ) {
$attachment_path = WP_CONTENT_DIR . '/uploads/test.txt';
$attachments[] = $attachment_path;
}
return $attachments;
}
add_filter( 'woocommerce_email_attachments', 'attach_terms_conditions_pdf_to_email', 10, 3);
Ahogy láthatjuk, nem túl bonyolult a kód. Röviden nézzük át, hogy mit csinál:
- első lépésként felveszünk "engedélyezett állapotokat" (
customer_on_hold_order
), - ha a rendelés éppen ezek valamelyikébe esik, akkor az
$attachment_path
útvonalon található fájlt (jelen esetben a/wp-content/uploads/test.txt
-t) csatolni fogja a levél mellékleteihez - ezt a funkciót pedig "hozzáköti" a
woocommerce_email_attachments
"eseményhez", tehát ez csak akkor fog lefutni, ha ez az esemény bekövetkezik
Fontos, hogy a hivatkozott fájl(ok) az elérési útvonalon létezzen(ek), hiszen ha nincsen(ek) ott, nem is fogja tudni csatolni az(oka)t a rendszer.
Ha több mellékletet is szeretnénk csatolni, azt is megtehetjük, méghozzá az alábbi módon:
<?php
/*
Plugin Name: Attachment to order e-mail
Plugin URI: https://www.webmenedzser.hu
Description: Add attachments to order e-mail
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPLv3
*/
function attach_terms_conditions_pdf_to_email ( $attachments, $status , $order ) {
$allowed_statuses = array( 'customer_on_hold_order' );
if( isset( $status ) && in_array ( $status, $allowed_statuses ) ) {
$tos = WP_CONTENT_DIR . '/uploads/test.txt';
$pp = WP_CONTENT_DIR . '/uploads/test2.txt';
$attachments[] = $tos;
$attachments[] = $pp;
}
return $attachments;
}
add_filter( 'woocommerce_email_attachments', 'attach_terms_conditions_pdf_to_email', 10, 3);
Ahogy látod, nem lett sokkal bonyolultabb a kód: most már kettő útvonalat definiálunk (a két fájlunkét), és mindkettőt külön-külön hozzáadjuk az $attachments
tömbhöz.
Arra is van lehetőséged, hogy nem az on-hold
(Feldolgozás alatt) állapothoz kötöd a mellékletek kiküldését - válassz az alábbi listából, és kísérletezz kedvedre:
cancelled_order
customer_completed_order
customer_invoice
customer_new_account
customer_note
customer_on_hold_order
customer_processing_order
customer_reset_password
failed_order
new_order
Gratulálok: ma is sikerült eggyel csökkentened a pluginjaid számát, ezzel még ráadásul spóroltál is. Yeeee. :)
Kérdésed van, esetleg témát javasolnál? Írd meg!