Woocommerce: PDF an Emails anhängen

Manchmal benötigt man einfach nur einen kleinen Code-Schnipsel um ein Problem zu lösen. In unserem Fall wollten wir ganz einfach die Widerrufsbelehrung und das Widerrufsformular als PDF-Datei an die automatisch versendete Rechnungs-Email anhängen. Das eingesetzte Webshop-System Woocommerce für WordPress hatte bereits eine automatische Rechnungserstellung als PDF inne, jedoch mussten wir am Ende doch selbst ein paar Zeilen schreiben um die gewünschten Dateien an die Email anzuhängen. Hier stellen wir unsere Lösung vor.

So geht´s:

  1. PDF-Dateien erstellen (in unserem Fall: Widerrufsformular.pdf & Widerrufsbelehrung.pdf)
  2. Im gewünschten Theme-Ordner ein Verzeichnis ‘PDF’ erstellen und die Dateien dort ablegen
    ( \wp-content\themes\dein-theme\PDF )
  3. Im Theme-Ordner die Datei functions.php öffnen und am Ende den unten angegebenen Code ergänzen
  4. Bei Bedarf den Code auf die eigenen Bedürfnisse anpassen

Natürlich können auch andere PDF-Dateien angehangen werden – der Quellcode ist da relativ selbsterklärend 😉

Quellcode:

/* Widerrufsbelehrung und Widerrufsformular an Woocommerce-Email anhängen */
//Filter-Hook für Woocommerce
add_filter( 'woocommerce_email_attachments', 'widerrufsbelehrung_email', 10, 3);
//Wird bei Emailanhängen von Woocommerce aufgerufen
function widerrufsbelehrung_email ( $anhang, $status , $bestellung ) {
  //Hier kann definiert werden, bei welchen Emails die Formulare angehangen werden sollen
  $anhang_bei_status = array( 'new_order', 'customer_invoice', 
                      'customer_processing_order', 'customer_completed_order' );
  if( isset( $status ) && in_array ( $status, $anhang_bei_status  ) ) {
     //Pfad zur PDF, hier im jeweiligen Template-Verzeichnis im Unterordner PDF
     $widerrufsbelehrung = get_template_directory() . '/PDF/Widerrufsbelehrung.pdf';
     $widerrufsformular = get_template_directory() . '/PDF/Widerrufsformular.pdf';
     $anhang[] = $widerrufsbelehrung;
     $anhang[] = $widerrufsformular;
  }
  return $anhang;
}