ÁSZF és Adatkezelési nyilatkozat automatikus csatolása a WooCommerce rendelési e-mailekhez előnézeti képe

ÁSZF és Adatkezelési nyilatkozat automatikus csatolása a WooCommerce rendelési e-mailekhez

| Olvasási idő: 1 perc

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. 

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: 

php
<?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
<?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!