Tovább a tartalomhoz

Szövegek és saját mezők a számlán

A számla szövegeinek módosítása szűrőkkel, saját beállítási mező, általános szerződési feltételek, bankszámlaadatok és egyedi számlázási mezők.

A példák kódját a téma functions.php fájljába írd. Ha új cimkét használsz, tedd be a template.php-ba is (lásd Sablon: cimkék és az alap szerkezet).

A bővítmény teljesen lefordítható, de ha csak egy-két kiírt szöveget akarsz megváltoztatni, szűrőt is használhatsz. A szűrők a sablonban a szövegek köré vannak téve:

Szűrő Alapszöveg
pdf_template_invoice_number_text Invoice No. :
pdf_template_order_number_text Order No. :
pdf_template_invoice_date_text Invoice Date :
pdf_template_order_date_text Order Date :
pdf_template_payment_method_text Payment Method :
pdf_template_shipping_method_text Shipping Method :
pdf_template_payment_status_text Payment Status :
pdf_template_billing_details_text Billing Details
pdf_template_shipping_details_text Shipping Details
pdf_template_registered_name_text Registered Name :
pdf_template_registered_office_text Registered Office :
pdf_template_company_number_text Company Number :
pdf_template_vat_number_text VAT Number :

Példa: az adószám feliratának átírása „Adószám: ”-ra.

add_filter( 'pdf_template_vat_number_text', 'custom_pdf_template_vat_number_text' );
function custom_pdf_template_vat_number_text() {
return 'Adószám: ';
}

Ezeket a szűrőket ritkán érdemes használni: ha csak fordítani akarsz, és nem akarsz a sablonhoz nyúlni, a fordítást egy fordítóbővítménnyel (például Loco Translate) egyszerűbb elvégezni.

A „PDF-számla” gomb felirata a Rendeléseim oldalon

Szekció neve “A „PDF-számla” gomb felirata a Rendeléseim oldalon”

A vásárló fiókjában, a rendelések listáján megjelenő gomb alapfelirata a PDF Invoice (a fordításban az ennek megfelelő magyar szöveg). A feliratot a woocommerce_pdf_my_account_button_label szűrővel írhatod át:

add_filter( 'woocommerce_pdf_my_account_button_label', 'custom_pdf_my_account_button_label' );
function custom_pdf_my_account_button_label() {
return 'Számla letöltése';
}

A woocommerce_pdf_invoice_additional_fields_admin akcióval új beállítási mezőt tehetsz a WooCommerce → PDF-számla beállítóoldal aljára. Más helyre nem lehet új mezőt beszúrni.

Az alábbi kód egy custom_text nevű szövegmezőt ad az űrlaphoz:

add_action( 'woocommerce_pdf_invoice_additional_fields_admin', 'custom_woocommerce_pdf_admin_field' );
function custom_woocommerce_pdf_admin_field() {
$woocommerce_pdf_invoice_options = get_option( 'woocommerce_pdf_invoice_settings' );
?>
<tr valign="top">
<th scope="row" class="titledesc">
<label for="woocommerce_pdf_invoice_settings[custom_text]">Egyedi szöveg a számlára</label>
</th>
<td class="forminp forminp-number">
<input id="woocommerce_pdf_invoice_settings[custom_text]"
name="woocommerce_pdf_invoice_settings[custom_text]"
type="text"
value="<?php if ( isset( $woocommerce_pdf_invoice_options['custom_text'] ) ) { echo esc_attr( $woocommerce_pdf_invoice_options['custom_text'] ); } ?>"
placeholder="" style="width: 350px;"/>
</td>
</tr>
<?php
}

A mező értéke a woocommerce_pdf_invoice_settings beállítás tömbjében, a mező nevével (itt custom_text) tárolódik.

A mező tartalmát a számlára egy saját cimkével viheted ki. Tedd a template.php-ba a [[CUSTOMFIELD]] cimkét a kívánt helyre, majd cseréld le a pdf_content_additional_content szűrővel:

add_action( 'pdf_content_additional_content', 'custom_pdf_additional_content' );
function custom_pdf_additional_content( $content ) {
$woocommerce_pdf_invoice_options = get_option( 'woocommerce_pdf_invoice_settings' );
$content = str_replace( '[[CUSTOMFIELD]]', $woocommerce_pdf_invoice_options['custom_text'], $content );
return $content;
}

Általános szerződési feltételek a számlán

Szekció neve “Általános szerződési feltételek a számlán”

Ez a példa egy többsoros Invoice Terms and Conditions mezőt ad a beállításokhoz, a szövegét pedig a [[PDFTERMSCONDITIONS]] cimke helyére írja a számlán. A lépések:

  1. Tedd a [[PDFTERMSCONDITIONS]] cimkét a template.php-ba a kívánt helyre.
  2. Add a kódot a téma functions.php fájljához.
  3. Írd be a szöveget a PDF-számla beállításaiban az új mezőbe.
add_action( 'woocommerce_pdf_invoice_additional_fields_admin', 'additional_fields_admin_terms' );
function additional_fields_admin_terms() {
$woocommerce_pdf_invoice_options = get_option( 'woocommerce_pdf_invoice_settings' );
?>
<tr valign="top">
<th scope="row" class="titledesc">
<label for="woocommerce_pdf_invoice_settings[invoice_terms]">Invoice Terms and Conditions</label>
</th>
<td class="forminp forminp-number">
<textarea id="woocommerce_pdf_invoice_settings[invoice_terms]"
name="woocommerce_pdf_invoice_settings[invoice_terms]"
placeholder="" style="width: 350px;"><?php if ( isset( $woocommerce_pdf_invoice_options['invoice_terms'] ) ) { echo esc_textarea( $woocommerce_pdf_invoice_options['invoice_terms'] ); } ?></textarea>
</td>
</tr>
<?php
}
add_filter( 'pdf_content_additional_content', 'pdf_additional_content_terms' );
function pdf_additional_content_terms( $content ) {
$woocommerce_pdf_invoice_options = get_option( 'woocommerce_pdf_invoice_settings' );
if ( isset( $woocommerce_pdf_invoice_options['invoice_terms'] ) ) {
$content = str_replace( '[[PDFTERMSCONDITIONS]]', $woocommerce_pdf_invoice_options['invoice_terms'], $content );
}
return $content;
}

Ha az általános szerződési feltételeket egy WordPress-oldalról akarod venni, a pdf_invoice_terms_page_id szűrővel módosíthatod, melyik oldal azonosítóját használja a bővítmény (például a rendelés nyelve vagy a rendelt termékek alapján másik oldalt adhatsz meg). Az oldal tartalma a szokásos the_content szűrőn megy át.

A WooCommerce Közvetlen banki átutalás (BACS) fizetési módjának adatait ki lehet írni a számlára a [[PDFBANKDETAILS]] cimkével. A cimkét a template.php-ban a kívánt helyre (például a láblécbe vagy a megjegyzések alá) kell tenni, a kódot a functions.php-be, a végén pedig ellenőrizni kell az elrendezést, és szükség esetén a sablon CSS-ét módosítani.

A következő változat a WooCommerce több bankszámláját is kezeli (woocommerce_bacs_accounts beállítás), és ha nincs kitöltött adat, a cimkét üresre cseréli:

add_filter( 'pdf_content_additional_content', 'pdf_additional_content_bank_details_footer', 10, 2 );
function pdf_additional_content_bank_details_footer( $content, $order_id ) {
$has_details = false;
$bacs_accounts = get_option( 'woocommerce_bacs_accounts' );
$account_html = '';
if ( ! empty( $bacs_accounts ) ) {
$account_html = '<table>';
foreach ( $bacs_accounts as $bacs_account ) {
$bacs_account = (object) $bacs_account;
if ( $bacs_account->account_name ) {
$account_html .= '<tr><td>' . wp_kses_post( wp_unslash( $bacs_account->account_name ) ) . ':</td>';
}
$account_fields = array(
'bank_name' => array( 'label' => 'Bank', 'value' => $bacs_account->bank_name ),
'account_number' => array( 'label' => 'Számlaszám', 'value' => $bacs_account->account_number ),
'sort_code' => array( 'label' => 'Bankkód', 'value' => $bacs_account->sort_code ),
'iban' => array( 'label' => 'IBAN', 'value' => $bacs_account->iban ),
'bic' => array( 'label' => 'BIC', 'value' => $bacs_account->bic ),
);
foreach ( $account_fields as $field_key => $field ) {
if ( ! empty( $field['value'] ) ) {
$account_html .= '<td class="' . esc_attr( $field_key ) . '">' . esc_html( $field['label'] ) . ': <strong><br />' . esc_html( $field['value'] ) . '</strong></td>';
$has_details = true;
}
}
$account_html .= '</tr>';
}
$account_html .= '</table>';
}
if ( $has_details ) {
$pdfbankdetails = '<section>Bankszámlaadataink' . $account_html . '</section>';
$content = str_replace( '[[PDFBANKDETAILS]]', $pdfbankdetails, $content );
} else {
$content = str_replace( '[[PDFBANKDETAILS]]', '', $content );
}
return $content;
}

Egyszerűbb, egy bankszámlás megoldás is használható: a woocommerce_bacs_settings beállításból olvassa az account_name, account_number, sort_code, bank_name, iban és bic értékeket, és ezeket egy kétoszlopos táblázatba írja a [[PDFBANKDETAILS]] helyére. Ugyanúgy a pdf_content_additional_content szűrőn keresztül fut.

Egyedi pénztármező a számlán (például mobilszám)

Szekció neve “Egyedi pénztármező a számlán (például mobilszám)”

Ha a pénztárhoz saját mezőt adtál (például mobilszámot), azt a számlára is kiviheted. Ehhez kell egy cimke a sablonban, például [[PDFBILLINGMOBILE]], és egy függvény, amely a számla előállításakor lecseréli:

add_filter( 'pdf_content_additional_content', 'custom_pdf_content_additional_content', 10, 2 );
function custom_pdf_content_additional_content( $content, $order_id ) {
$content = str_replace( '[[PDFBILLINGMOBILE]]', get_post_meta( $order_id, 'mobile', true ), $content );
return $content;
}

Megszólítás (titulus) a számlázási és szállítási címben

Szekció neve “Megszólítás (titulus) a számlázási és szállítási címben”

A példa feltételezi, hogy a pénztárban már van a rendeléshez mentett mező (például a WooCommerce Checkout Field Editor bővítménnyel létrehozva), amelynek neve billing_title, illetve shipping_title. A kód a megszólítást a cím és a név elé teszi:

add_filter( 'woocommerce_order_formatted_billing_address', 'pdf_invoice_woocommerce_order_formatted_billing_address', 10, 2 );
function pdf_invoice_woocommerce_order_formatted_billing_address( $address, $order ) {
$billing_title = get_post_meta( $order->get_id(), 'billing_title', true );
$address = array( 'billing_title' => $billing_title ) + $address;
return $address;
}
add_filter( 'woocommerce_formatted_address_replacements', 'pdf_invoice_add_woocommerce_formatted_address_replacements', 10, 2 );
function pdf_invoice_add_woocommerce_formatted_address_replacements( $replace, $args ) {
$replace['{title}'] = $args['title'];
$replace['{name}'] = $args['title'] . ' ' . $args['first_name'] . ' ' . $args['last_name'];
return $replace;
}

A szállítási címhez ugyanezt a woocommerce_order_formatted_shipping_address szűrővel kell megcsinálnod. Mindkét cím szűrőjében az alábbi mezőket kell feltölteni a rendelésből (get_billing_<mező>(), illetve get_shipping_<mező>()): title, first_name, last_name, company, address_1, address_2, city, state, postcode, country.

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások