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 számla szövegeinek átírása
Szekció neve “A számla szövegeinek átírása”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';}Új mező a beállítóoldal aljára
Szekció neve “Új mező a beállítóoldal aljára”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:
- Tedd a
[[PDFTERMSCONDITIONS]]cimkét atemplate.php-ba a kívánt helyre. - Add a kódot a téma
functions.phpfájljához. - Í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.
Bankszámlaadatok a számlán
Szekció neve “Bankszámlaadatok a számlán”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: