Professional Extension #
If you own a license of the Professional extension or our PDF Invoice extensions bundle, you can change filenames simply via the plugin settings. Go to WooCommerce > PDF Invoices > Documents > (document of your choice), where you’ll find a field to enter the format for your custom filenames.
You can use plain text and the same placeholders as in the address customization. Here are some of the most used:
- {{order_number}}
- {{order_date}}
- {{document_number}} (will display the invoice number for invoices, etc.)
- {{formatted_billing_full_name}}
- {{billing_first_name}}
- {{billing_last_name}}
Free version #
To change the filename of the PDF attachments / downloads in the free version of the plugin, you can use the wpo_wcpdf_filename
filter. Read this if you haven’t used wordpress filters / edited functions.php before!
Example 1: Prepend shop name #
add_filter( 'wpo_wcpdf_filename', 'wpo_wcpdf_custom_filename', 10, 4 ); function wpo_wcpdf_custom_filename( $filename, $template_type, $order_ids, $context ) { // prepend your shopname to the file $new_filename = 'myshopname_' . $filename; return $new_filename; }
Example 2: Replace ‘invoice’ with something else #
add_filter( 'wpo_wcpdf_filename', 'wpo_wcpdf_custom_filename', 10, 4 ); function wpo_wcpdf_custom_filename( $filename, $template_type, $order_ids, $context ) { $invoice_string = _n( 'invoice', 'invoices', count($order_ids), 'woocommerce-pdf-invoices-packing-slips' ); $new_prefix = _n( 'booking', 'bookings', count($order_ids), 'woocommerce-pdf-invoices-packing-slips' ); $new_filename = str_replace($invoice_string, $new_prefix, $filename); return $new_filename; }
Example 3: Remove ‘invoice’ #
add_filter( 'wpo_wcpdf_filename', 'wpo_wcpdf_custom_filename', 10, 4 ); function wpo_wcpdf_custom_filename( $filename, $template_type, $order_ids, $context ) { $invoice_string = _n( 'invoice', 'invoices', count($order_ids), 'woocommerce-pdf-invoices-packing-slips' ); $new_filename = str_replace($invoice_string.'-', '', $filename); return $new_filename; }
Example 4: Change all filenames #
This example doesn’t actually change anything as is, but you can use it as a basis to fully customize the filenames for all documents.
add_filter( 'wpo_wcpdf_filename', 'wpo_wcpdf_custom_filename', 10, 4 ); function wpo_wcpdf_custom_filename( $filename, $template_type, $order_ids, $context ) { $count = count($order_ids); switch ($template_type) { case 'invoice': $name = _n( 'invoice', 'invoices', $count, 'woocommerce-pdf-invoices-packing-slips' ); break; case 'packing-slip': $name = _n( 'packing-slip', 'packing-slips', $count, 'woocommerce-pdf-invoices-packing-slips' ); break; case 'proforma': $name = _n( 'proforma-invoice', 'proforma-invoices', $count, 'wpo_wcpdf_pro' ); break; case 'credit-note': $name = _n( 'credit-note', 'credit-notes', $count, 'wpo_wcpdf_pro' ); break; default: $name = $template_type; break; } if ( $count == 1 ) { $document = wcpdf_get_document( $template_type, $order_ids ); if ( $number = $document->get_number() ) { $suffix = $number; } elseif ( isset($document->order) ) { $number = $document->order->get_order_number(); } else { $number = $order_ids[0]; } $suffix = $number; } else { $suffix = date('Y-m-d'); // 2020-11-11 } $filename = $name . '-' . $suffix . '.pdf'; return $filename; }