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;
}