Developer hooks and filters reference #
PDF Invoices & Packing Slips Generator for WooCommerce exposes a set of filters and actions so you can adjust document data, numbering, and behavior in code without editing plugin files. Every hook below is verified against the plugin source (v2.4.8). All hooks use the alg_wc_pdf_invoicing_ prefix.
Value filters #
| Filter | Filtered value | Arguments |
|---|---|---|
alg_wc_pdf_invoicing_return_prop |
The value any property shortcode is about to return. | $value, $atts, $shortcodes_obj |
alg_wc_pdf_invoicing_get_doc_option |
Any document option value read by the plugin. | $value, $doc_id, $option_id |
alg_wc_pdf_invoicing_get_html_content |
The document’s rendered HTML content, after content filters. | $content, $doc |
alg_wc_pdf_invoicing_default_doc_title |
The default title of a document (for example “Invoice”). | $title, $doc_id |
alg_wc_pdf_invoicing_enabled_docs |
The array of enabled document IDs the plugin processes. | $docs |
alg_wc_pdf_invoicing_create_docs |
Whether a document should be auto-created for an order (return false to skip). |
$do_create, $doc_id, $order_id |
alg_wc_pdf_invoicing_add_order_notes |
Whether an order note is added when a document is created or removed (default true). |
$add_note |
alg_wc_pdf_invoicing_counters_settings |
The Counters settings-section array. | $settings |
Override a document option, for example the number format #
add_filter( 'alg_wc_pdf_invoicing_get_doc_option', function ( $value, $doc_id, $option_id ) {
if ( 0 === (int) $doc_id && 'number_format' === $option_id ) {
$value = 'INV-[current_time datetime_format="Y"]-[doc_counter format="%05d"]';
}
return $value;
}, 10, 3 );
Skip automatic creation for zero-total orders #
add_filter( 'alg_wc_pdf_invoicing_create_docs', function ( $do_create, $doc_id, $order_id ) {
$order = wc_get_order( $order_id );
return ( $order && 0 == $order->get_total() ) ? false : $do_create;
}, 10, 3 );
Item-loop filters #
These fire inside the [each_item] shortcode, so you can reorder, filter, or wrap line items.
| Filter | Filtered value | Arguments |
|---|---|---|
alg_wc_pdf_invoicing_shortcode_each_item_items |
The list of order items iterated by [each_item]. |
$items, $order, $shortcodes_obj |
alg_wc_pdf_invoicing_shortcode_each_item_before_item |
Output accumulated before each item is rendered. | $output, $item, $order, $shortcodes_obj |
alg_wc_pdf_invoicing_shortcode_each_item_after_item |
Output accumulated after each item is rendered. | $output, $item, $order, $shortcodes_obj |
Sort invoice line items alphabetically by name #
add_filter( 'alg_wc_pdf_invoicing_shortcode_each_item_items', function ( $items, $order, $obj ) {
uasort( $items, function ( $a, $b ) {
return strcmp( $a->get_name(), $b->get_name() );
} );
return $items;
}, 10, 3 );
Actions #
| Action | Fires when | Arguments |
|---|---|---|
alg_wc_pdf_invoicing_doc_created |
After a document is created for an order. | $order_id, $doc |
alg_wc_pdf_invoicing_doc_removed |
After a document is removed from an order. | $order_id, $doc |
alg_wc_pdf_invoicing_before_core_loaded |
Just before the plugin core loads. | $core |
alg_wc_pdf_invoicing_admin_doc_settings_loaded |
After the document settings sections are registered in the admin. | $settings_page |
Log every document number as it is created #
add_action( 'alg_wc_pdf_invoicing_doc_created', function ( $order_id, $doc ) {
error_log( 'Created ' . $doc->get_number() . ' for order ' . $order_id );
}, 10, 2 );
The settings gate filter #
alg_wc_pdf_invoicing_settings is an internal filter the plugin uses to gate Pro-only behavior (for example, whether the Total documents field is read-only). In the free version it returns the passed default; in Pro it returns an empty value or an unlocking array. It is not intended for store customization.
Useful objects #
The $doc object passed to the actions is an Alg_WC_PDF_Invoicing_Doc instance. Handy methods include get_number(), get_counter(), get_formatted_date(), get_author_full_name(), is_created(), and get_pdf( $dest, $path ). The shortcodes object passed to alg_wc_pdf_invoicing_return_prop exposes get_current_language_for_translate() for language-aware output.
Need help? #
If you are extending PDF Invoices & Packing Slips Generator for WooCommerce and a hook does not behave as expected, contact us on the PDF Invoicing support forum with the hook name and a short code sample.