Actions & Filter

Permalink Actions & Filter

Das Modul Rechnungs PDF bietet Actions & Filter an, um Entwicklern einen Zugriff auf den Code des Add-On zu gewähren. Im Folgenden Abschnitt gibt es eine Auflistung aller Actions & Filter inklusive Beispielen.

Permalink class-wp-wc-invoice-pdf-backend-options.php

Name: woocommerce_get_sections_preferences-wp-wc-invoice-pdf
Art: Filter
Beschreibung: Du kannst die Option Sections im Backend bearbeiten, du kannst Sections ausblenden sowie eigene Sections hinzufügen.

Beispiel:


add_filter( 'woocommerce_get_sections_preferences-wp-wc-invoice-pdf', 'my_invoice_sections_preferences' );
function my_invoice_sections_preferences( $sections ) {
	unset( $sections[ 'custom_css_styles' ] );		// remove 'Custom CSS Styles'
	$sections[ 'my_section' ] = 'My Section';		// add section 'My Section'
	return $sections;
}

Name: wp_wc_invoice_pdf_options_section_{{section_id}}
Art: Filter
Beschreibung: Hast du eine eigene Option Section hinzugefügt, kannst du mit diesem Filter die Optionsfelder hinzufügen. Auch für bereits bestehende Sections kannst du Optionsfelder hinzufügen. Deine Optionen kannst du im Template (invoice-content.php) verwenden.

Beispiel:

// add an options to custom section 'my_section'
add_filter( 'wp_wc_invoice_pdf_options_section_my_section', 'my_invoice_options_section_my_section' );
function my_invoice_options_section_my_section( $options ) {
	$options[] = array( 'title'	=> 'My Settings', 'type' => 'title','desc' => '', 'id' => 'wp_wc_invoice_pdf_my_settings' );
	$options[] = array(
					'name' 		=> 'My Setting',
					'desc' 		=> '<br />' . 'My description',
					'tip'  		=> 'My tip',
					'id'   		=> 'wp_wc_invoice_pdf_my_setting',
					'type' 		=> 'text',
					'default'  	=> 'My default'
				);
	$options[] = array( 'type' => 'sectionend', 'id' => 'wp_wc_invoice_pdf_my_settings' );
	return $options;
}
// add an option to section ivoice_content
add_filter( 'wp_wc_invoice_pdf_options_section_invoice_content', 'my_invoice_options_section_invoice_content' );
function my_invoice_options_section_invoice_content( $options ) {
	$options[] = array( 'title'	=> 'My Content Settings', 'type' => 'title','desc' => '', 'id' => 'wp_wc_invoice_pdf_my_content_settings' );
	$options[] = array(
					'name' 		=> 'My Color',
					'desc' 		=> '<br />' . 'My color',
					'tip'  		=> 'My tip',
					'id'   		=> 'wp_wc_invoice_pdf_my_color',
					'type' 		=> 'color',
					'default'  	=> '#ff0000'
				);
	$options[] = array( 'type' => 'sectionend', 'id' => 'wp_wc_invoice_pdf_my_content_settings' );
	return $options;
}
// add an option to section emails
add_filter( 'wp_wc_invoice_pdf_options_section_emails', 'my_invoice_options_section_emails' );
function my_invoice_options_section_emails( $options ){
	$last_element = array_pop( $options );
	$options[] = array(	
					'name' => 'Kundennotiz',
					'desc' => '<br />' . 'Add invoice as an attachment to "Customer note" email',
					'tip'  => 'Add invoice as an attachment to "Customer note" email',
					'id'   => 'wp_wc_invoice_pdf_emails_customer_note',
					'type' => 'select',
					'default'  => 'off',
					'options' => array(
									'on'  => __( 'Yes', 'woocommerce-invoice-pdf' ),
									'off' => __( 'No', 'woocommerce-invoice-pdf' )
								)	
				);		
	$options[] = $last_element;	
	return $options;
}

Permalink Platzhalter in den Optionen

Name: wp_wc_invoice_pdf_placeholders
Dateien: class-wp-wc-invoice-pdf-create-pdf.php, class-wp-wc-invoice-pdf-backend-options.php, options-section-general-pdf-settings.php, options-section-invoice-content.php, invoice-content.php
Art: Filter
Beschreibung: Es ist möglich, Platzhalter hinzuzufügen, die für den Frontend-Dateinamen, den Backend-Dateinamen und den Betreff in der Rechnung verwendet werden können.

Beispiel:

add_filter( 'wp_wc_invoice_pdf_placeholders', 'my_placeholder' );
function my_placeholder( $placeholders ) {
	$placeholders[ 'customer-name' ]	= 'Customer's last name';
	$placeholders[ 'my-random-number' ]	= 'My Random Number';
	return $placeholders;	
}

Name: wp_wc_invoice_pdf_placeholder_{{placeholder}}
Dateien: class-wp-wc-invoice-pdf-create-pdf.php, invoice-content.php
Art: Filter
Beschreibung: Für jeden hinzugefügten Platzhalter kannst du einen Filter erstellen, in dem entschieden wird, gegen was der Platzhalter ersetzt wird. Standardmäßig wird der Platzhalter durch den Wert (value) ersetzt, den du im Filter ‘wp_wc_invoice_pdf_placeholders’ gesetzt hast.

Beispiel:

add_filter( 'wp_wc_invoice_pdf_placeholder_my-random-number', 'my_random_number', 10, 3 );
function my_random_number( $value, $key, $order ) {
	return rand( 100, 999 );	// or some useful meta data of order
}
add_filter( 'wp_wc_invoice_pdf_placeholder_customer-name', 'my_customer_name', 10, 3 );
function my_customer_name( $value, $key, $order ) {
	if ( is_a( $order, 'WC_Order' ) ) {
		return $order->billing_last_name;
	} else {
		return __( 'Doe', 'woocommerce-invoice-pdf' );
	}
}

Permalink class-wp-wc-invoice-pdf-backend-download.php

Name: wp_wc_invoice_pdf_before_backend_download
Art: Action
Beschreibung: Führe eine Action vor einem Download im Backend aus. Erstelle keine Ausgabe, sonst erhältst du den Fehler: Unable to stream pdf: headers already sent

Beispiel:

add_action( 'wp_wc_invoice_pdf_before_backend_download', 'my_invoice_before_backend_download', 10, 1 ); 
function my_invoice_before_backend_download( $order ) {
	// do sth
} 

Name: wp_wc_invoice_pdf_backend_filename
Art: Filter
Beschreibung: Der Backend-Dateiname kann mit diesem Filter verändert werden.

Beispiel:

add_filter( 'wp_wc_invoice_pdf_backend_filename', 'my_invoice_backend_filename', 10 ,2 );
function my_invoice_backend_filename( $filename, $order ) {
	return date( 'Y-m-d-H-i' ) . '-' . $filename;
}

Name: wp_wc_invoice_pdf_test_filename
Art: Filter
Beschreibung: Der Dateiname der Test Rechnungen kann mit diesem Filter verändert werden.

Beispiel:

add_filter( 'wp_wc_invoice_pdf_test_filename', 'my_invoice_test_filename' );
function my_invoice_test_filename( $filename ) {
	return date( 'Y-m-d-H-i' ) . '-' . $filename;
}

Permalink class-wp-wc-invoice-pdf-view-order-download.php

Name: wp_wc_invoice_pdf_before_frontend_download
Art: Action
Beschreibung: Führe eine Action vor einem Download im Frontend aus. Erstelle keine Ausgabe, sonst erhältst du den Fehler: Unable to stream pdf: headers already sent

Beispiel:

add_action( 'wp_wc_invoice_pdf_before_frontend_download', 'my_invoice_before_frontend_download', 10, 1 ); 
function my_invoice_before_frontend_download( $order ) {
	// do sth
} 

Name: wp_wc_invoice_pdf_view_order_button
Art: Action
Beschreibung: Mit dieser Action lässt dich die Ausgabe des Download-Buttons im Frontend beeinflussen.

Beispiel:

add_action( 'wp_wc_invoice_pdf_view_order_button', 'my_view_order_button', 10, 4 );
function my_view_order_button( $a_href, $a_target, $a_attributes, $button_text ) {
	?>
	<p class="my-invoice-button-class">
		<a href="<?php echo $a_href; ?>" class="button" >
		Download	
		</a>
	</p>
	<?php>
}

Name: wp_wc_invoice_pdf_frontend_filename
Art: Filter
Beschreibung: Der Frontend-Dateiname kann mit diesem Filter verändert werden.

Beispiel:

add_filter( 'wp_wc_invoice_pdf_frontend_filename', 'my_invoice_frontend_filename', 10, 2 );
function my_invoice_frontend_filename( $filename, $order ) {
	if ( current_user_can( 'install_plugins' ) ) {
		return 'my-own-invoice-' . $filename;	
	} else {
		return $filename;	
	}
}

Name: wp_wc_invoice_pdf_view_order_redirect_link
Art: Filter
Beschreibung: In diesem Filter wird geregelt, zu welcher Seite weitergeleitet wird, wenn der User nicht die Rechte hat, die PDF aufzurufen. Standardmäßig wird zur My-Account Seite weitergeleitet.

Beispiel:

add_filter( 'wp_wc_invoice_pdf_view_order_redirect_link', 'my_invoice_view_order_redirect_link' );
function my_invoice_view_order_redirect_link( $location ) {
	return get_permalink( 268 );
}

Permalink class-wp-wc-invoice-pdf-email-attachment.php

Name: wp_wc_invoice_before_adding_attachment
Art: Action
Beschreibung: Führe eine Aktion aus, bevor die Rechnung an eine E-Mail angehangen wird.

Beispiel:

add_action( 'wp_wc_invoice_before_adding_attachment', 'my_invoice_before_adding_attachment', 10, 2 );
function my_invoice_before_adding_attachment( $status, $order ) {
	// do sth.
}

Name: wp_wc_inovice_pdf_allowed_stati
Art: Filter
Beschreibung: Mit diesem Filter können an weitere E-Mails, die im WooCommerce System registriert worden sind, die Rechnungen angehangen werden. Dazu sollten auch diese Status im Optionsmenü hinzugefügt werden.

Beispiel:

add_filter( 'wp_wc_inovice_pdf_allowed_stati', 'my_invoice_allowed_stati' );
function my_invoice_allowed_stati( $allowed_stati ) {
	$allowed_stati[] = 'customer_note';
	return $allowed_stati;
}

Permalink invoice-content.php

Name: wp_wc_invoice_pdf_invoice_date
Art: Filter
Beschreibung: Du kannst ein Rechnungsdatum mit diesem Filter zur Rechnung hinzufügen.

Beispiel:

add_filter( 'wp_wc_invoice_pdf_invoice_date', 'my_invoice_invoice_date', 10, 2 );
function my_invoice_invoice_date( $invoice_date, $order ) {
	return 'Invoice date:<br />' . date( 'Y.m.d' ); // or add some meta data	
}

Permalink class-wp-wc-invoice-pdf-create-pdf.php

Name: wp_wc_invoice_pdf_before_get_pdf_content
Art: Filter
Beschreibung: Mit diesem Filter kann eine Action ausgeführt werden, bevor der Inhalt der Rechnung generiert wird.

Beispiel:

add_action( 'wp_wc_invoice_pdf_before_get_pdf_content', 'my_invoice_before_get_pdf_content', 10 ,2 );
function my_invoice_before_get_pdf_content( $order, $args ) {
	// do sth	
}

Name: wp_wc_invoice_pdf_output_format
Art: Filter
Beschreibung: Für Test- und Entwicklungszwecke kann es hilfreich sein, die Rechnung nicht als PDF zu rendern, sondern als HTML auszugeben. Für diesen Fall muss der Filter den String ‘html’ zurückgeben.

Beispiel:

add_filter( 'wp_wc_invoice_pdf_output_format', 'my_invoice_output_format' );
function my_invoice_output_format( $output_format ) {
	return 'html';	
}

Name: wp_wc_invoice_pdf_args_before_pdf_rendering
Art: Filter
Beschreibung: Du kannst $args ändern, bevor die PDF gerendert wird, das ist für Testzwecke hilfreich.

Beispiel:

add_filter( 'wp_wc_invoice_pdf_args_before_pdf_rendering', 'my_invoice_args_before_pdf_rendering' );
function my_invoice_args_before_pdf_rendering( $args ) {
	$args[ 'remove_css_style' ] = true;
	$args[ 'inline_style' ] = false;
	return $args;
}

Name: wp_wc_invoice_get_footer_or_header, wp_wc_invoice_include_background_image, wp_wc_invoice_get_fonts
Art: Filter
Beschreibung: In den folgenden Filtern kann die Ausgabe komplett selbst übernommen werden. Ist ein Filter vorhanden, wird der Standardcode nicht ausgeführt.

Beispiel:

add_filter( 'wp_wc_invoice_get_footer_or_header', 'my_invoice_get_footer_or_header', 10, 3 );
function my_invoice_get_footer_or_header( $content, $part, $args ) {
	if ( $part == 'header' ) {
		// $content = ...	
	} else {
		// $content = ...
	}
	return $content;
}
add_filter( 'wp_wc_invoice_include_background_image', 'my_invoice_include_background_image', 10, 5 );
function my_invoice_include_background_image( $content, $part, $height, $width, $args ) {
	// $content = ... // your code
	return $content;	
}
add_filter( 'wp_wc_invoice_get_fonts', 'my_invoice_get_fonts', 10, 2 );
function my_invoice_get_fonts( $content, $args ) {
	// $content = ... // your code
	return $content;	
}

Name: wp_wc_invoice_pdf_template_invoice_content, wp_wc_invoice_pdf_template_default_styles, wp_wc_invoice_pdf_template_page_numbers
Art: Filter
Beschreibung: Um den Inhalt der Rechnung zu generieren, werden drei Template Dateien genutzt. ‘invoice-content.php’ und ‘invoice-default-styles.php’ können durch Themetemplates überschrieben werden. ‘invoice-content-page-numbers.php’ regelt die Ausgabe der Seitenanzahlen und beinhaltet keinen HTML Code, diese Datei kann nicht durch ein Themetemplate überschrieben werden. Für alle drei Templates können durch die folgenden Filter andere Dateien geladen werden.

Beispiel:

add_filter( 'wp_wc_invoice_pdf_template_invoice_content', 'my_invoice_template_invoice_content' ); 
function my_invoice_template_invoice_content( $template_file ) {
	$my_template_file = get_stylesheet_directory() . DIRECTORY_SEPARATOR . 'my_template_invoice_content.php';	 
	return ( file_exists( $my_template_file ) ) ? $my_template_file : $template_file;
}

Permalink invoice-content-page-numbers.php

Name: wp_wc_invoice_pdf_page_number_text_height_factor
Art: Filter
Beschreibung: Wenn deine Seitennummern nicht ganz richtig platziert zu sein scheinen, kannst du die folgende Variable ändern, um mehr Kontrolle über die Texthöhe zu haben. Der Standardwert ist 0.87.

Beispiel:

add_filter( 'wp_wc_invoice_pdf_page_number_text_height_factor', 'my_invoice_page_number_text_height_factor' );
function my_invoice_page_number_text_height_factor( $factor ) {
	return 0.9;
}

Permalink Wenn Sie vom Add-On lieber mit Sie angesprochen werden wollen

add_filter( 'load_textdomain_mofile', 'wp_wc_invoice_pdf_language_de_sie', 10, 2 );
function wp_wc_invoice_pdf_language_de_sie( $mofile, $domain ) {
    if ( 'woocommerce-invoice-pdf' === $domain ) {
		return str_replace( '-de_DE', '-de_DE_Sie', $mofile );
	}
    return $mofile;
}