Variabilný symbol v notifikačnom e-maile

Keď zákazník nakupuje tovar na Vašom e-shope a platí ho formou prevodu na bankový účet, dostáva sa jeho objednávka do stavu „čaká na platbu“ a prichádza mu notifikačný e-mail.

V ňom je síce napísané, že na identifikáciu platby je potrebné použiť číslo objednávky, nie každý si však z toho odvodí, že má číslo objednávky zadať vo svojom internet bankingu ako variabilný symbol.

Aby sme to zákazníkom uľahčili, použijeme jednoduchý snippet, ktorý vložíme do functions.php (ideálne v child téme) a variabilný symbol doplníme do notifikačného e-mailu. Zároveň sa variabilný symbol zjaví aj na ďakovnej stránke, ktorá potvrdzuje úspešnú objednávku.

  1. add_filter( 'woocommerce_bacs_account_fields', 'custom_bacs_account_field', 10, 2);
  2. function custom_bacs_account_field( $account_fields, $order_id ) {
  3.     static $call_counter = 0;
  4.     if($call_counter > 0 )  {
  5.         return $account_fields;
  6.     }
  7.  
  8.     $order = wc_get_order( $order_id );
  9.     $account_fields['variable_symbol' ] = array(
  10.             'label' => 'Variabilný symbol',
  11.             'value' => $order->get_order_number()
  12.         );
  13.     $call_counter++;
  14.     return $account_fields;
  15. }

Tento kód bol pôvodne funkčný aj bez statickej premennej $call_counter. V nových verziách WooCommerce, však z nezistiteľných dôvodov dochádza k duplikácií variabilného symbolu, čo vyzerá amatérsky.

Na začiatku si teda definujeme premennú $call_counter, ktorú nastavíme na nulu. Nasleduje podmienka, v ktorej kontrolujeme hodnotu tejto premennej a ak je vyššia ako 0, znamená to, že cyklus, ktorý spracováva túto funkciu už prebehol a teda nerobíme nič, len rovno vrátime hotový výsledok. Ak je ale hodnota 0, spustíme zbytok kódu. V ňom do premennej $account_fields[‚variable_symbol‘] pridáme hodnotu Variabilný symbol : číslo objednávky a tým dosiahneme to, čo potrebujeme.

Výsledok v potvrdzujúcom e-maili a na ďakovnej stránke vyzerá takto:

Poznáte iný spôsob ako vypisovať variabilný symbol? Napíšte do komentára.

2 názory na “Variabilný symbol v notifikačnom e-maile”

  1. Doporučuji ten snippet opravit a použít toto.

    $account_fields[‚variable_symbol‘] = array(
    ‚label‘ => ‚Variabilní symbol‘,
    ‚value‘ => $order->get_order_number()
    );

    $order_id je id objednávky v databázi a při vlastním číslování objednávek se bude od čísla objednávky lišit. V případě, že vlastní číslování objednávek není použito, tak vrací $order_id. Pokud se pracuje pouze s tím $order_id, pak je pro změnu zbytečné volat $order = wc_get_order( $order_id );

    Ten problém s $call_counter jsem vůbec nezaznamenal a spíš bych zkusil důkladně prohledat kód jestli není funkce použita duplicitně. (např. ve functions.php a pluginu na správu snippetů)

Pridajte komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Návrat hore