Zusätzliche PDFs mit WooCommerce versenden

Für Woocommerce Shops verwende ich gerne das Plugin https://de.wordpress.org/plugins/woocommerce-pdf-invoices-packing-slips/
in der kostenlosen Form. Diese reicht vollkommen aus, um einen rechtskonformen Onlineshop auf die Beine zu stellen.
Es kann sowohl Rechnungen als auch Lieferscheine im PDF Format erstellen. Dies sind Funktionen, die WooCommerce von Haus aus nicht mitbringt. Ein Shop sollte jedoch in der Lage sein, eine ansehnliche Rechnung zu erstellen. Die Rechnung wird im Moment der Bestellung erzeugt. Im Backend kann sie bei Bedarf jederzeit gelöscht und neu generiert werden. Die Gestaltung lässt sich relativ einfach per HTML-template anpassen.

Das Plugin erlaubt es die Rechnung an verschiedene emails per Attachment anzuhängen. Die Wichtigste davon ist wohl die Bestellbestätigung an den Kunden.

Möchte man weitere Dokumente anhängen, wie z.B. die AGB oder das Widerrufsformular, lässt sich das mit folgendem Code in functions.php erreichen:

add_filter( 'woocommerce_email_attachments', 'attach_terms_conditions_pdf_to_email', 10, 3);
function attach_terms_conditions_pdf_to_email ( $attachments, $status , $order ) {
$allowed_statuses = array( 'customer_processing_order' );
if( isset( $status ) && in_array ( $status, $allowed_statuses ) ) {
$attachments[] = get_stylesheet_directory() . '/woocommerce/attached-files/AGB-JdB.pdf';
$attachments[] = get_stylesheet_directory() . '/woocommerce/attached-files/Widerrufsbelehrung-Widerrufsformular.pdf';
}
return $attachments;
}

Entscheidend ist der Status “ customer_processing_order” , welcher die Bestellbestätigung darstellt, und nicht etwa customer_completed_order.

Abschliessend noch ein Tip zur Erzielung deutscher Datumsformate in den Rechnungen :

// Datumsformate in Rechnungen
//
add_filter( 'wpo_wcpdf_date_format', 'wpo_wcpdf_date_format', 10, 2 );
function wpo_wcpdf_date_format( $date_format, $document ) {
return 'd.m.Y';
}

add_filter( 'wpo_wcpdf_order_date', 'wpo_wcpdf_order_date_format', 10, 3 );
function wpo_wcpdf_order_date_format( $order_date, $order_date_mysql, $document ) {
return date_i18n( 'd.m.Y', strtotime( $order_date_mysql ) );
}