Open SloZiga opened 2 years ago
Če se uporablja kak drugi "framework" za urejanje zaključnega emaila, potem je potrebno ročno dodati hook ali pa pa klicati do_action v predlogi. Hook je tale https://github.com/woocart/woocommerce-upn/blob/main/index.php#L35
Torej moram v functions.php dodati "add_action('woocommerce_email_before_order_table', array($this, 'upn_instructions'), 10, 3);" da se prikaže tudi v emailu. (Da za kreacijo zaključenega emaila se uporablja dodatni vtiček "WooCommerce PDF Invoices & Packing Slips" in "WooCommerce Pretty Emails".
Se opravičujem mi je malo tuje dodajanja Hookov in function.php,..... ali bi vas lahko prosil za malo več informacij kje je potrebno vstaviti kodo in točno kakšno kodo, se probal "add_action('woocommerce_email_before_order_table', array($this, 'upn_instructions'), 10, 3);" dodati v function.php samo sem dobil error na strani ( predvievam da mi še nekaj manka poleg te kode) Se ponovno opravičujem sem zelo zelen pri teh zadevah. In vsaka pomoč bo dobrodošla in cenjena!
LP
Ne, to se že izvede samo "WooCommerce Pretty Emails" nikoli ne požene zadeve ker ne kliče WooCommerce hookov. Primer je recimo v https://github.com/woocart/woocommerce-upn#:~:text=Pri%20page%20builder%20Elementor%20se%20UPN%20za%20neprijavljene%20uporabnike%20ne%20prikazuje.%20%C4%8Ce%20%C5%BEelite%2C%20da%20se%20UPN%20nalog%20prikazuje%20tudi%20za%20neprijavljene%20uporabnike%2C%20v%20functions.php%20dodatje%20slede%C4%8De.
Aha torej moram dodati to kodo za neprijavljene, bom jo sedaj dodal, a moram pri tej kodi zamenjati "add_action( 'woocommerce_thankyou', 'adding_customers_details_to_thankyou', 10, 1 );"
v:
" add_action('woocommerce_email_before_order_table', array($this, 'upn_instructions'), 10, 3);"
Ne, najti je treba hook ki ga ima "WooCommerce Pretty Emails" in potem spremenit.
-add_action( 'woocommerce_thankyou', 'adding_customers_details_to_thankyou', 10, 1 );
+add_action( 'WooCommerce Pretty Emails hook', 'adding_customers_details_to_thankyou', 10, 1 );
function adding_customers_details_to_thankyou( $order_id ) {
// Only for non logged in users
if ( ! $order_id || is_user_logged_in() ) return;
$order = wc_get_order($order_id); // Get an instance of the WC_Order object
wc_get_template( 'order/order-details-customer.php', array('order' => $order ));
}
Hmmm po pregledu functions.php od child teme ne najdem nobenega zapisa za "WooCommerce Pretty Emails" katerega bi lahko spremenil, sem začasno onemogočil vtiček "WooCommerce Pretty Emails" ker ne najdem hooka od plugina (samo tudi po tem ko sem vtiček onemogočil se QR koda ne prikaže v e-pošti). Sem pa opazil da se na UPN obrazcu (temu ki ga dobim na spletni strani preko e-pošte ga še vedno ne prejmem) sem opazi, da se priimek 2x izpiše (https://ibb.co/0qQkdtv)
Pozdravljeni.
Jaz imam enake težave, da mi v prejetem mailu novega naročila ne prikaže slike. Poskusil sem pri default nastavitvah woocommerca, torej brez kakšnega dodatnega vtičnika za "framework" urejanja zaključnega maila/sporočila. V izvorni kodi maila je videti, da kliče image, le prikaže ga ne. Sem poskusil prejem maila v Gmailu in v Outlooku, pri obeh enako. Je mogoče kdo kaj ugotovil v čem bi bil problem? Hvala za pomoč in odgovor.
Pozdravljeni.
Jaz imam enake težave, da mi v prejetem mailu novega naročila ne prikaže slike. Poskusil sem pri default nastavitvah woocommerca, torej brez kakšnega dodatnega vtičnika za "framework" urejanja zaključnega maila/sporočila. V izvorni kodi maila je videti, da kliče image, le prikaže ga ne. Sem poskusil prejem maila v Gmailu in v Outlooku, pri obeh enako. Je mogoče kdo kaj ugotovil v čem bi bil problem? Hvala za pomoč in odgovor.
Mogoče je da karkoli se uporablja stripa sliko iz končenga maila ali pa PHP nima vseh extensionov.
Mislim da sem odkril vzrok problema. PNG slika je base64 enkodirana, ampak jo večina emailov (med njimi tudi gmail) spremeni string in je ne dekodira uspešno, torej se ne prikaže. Če pogledate raw message vidite, da doda: "=\r\n" za vsakih 80 črk in to pokvari encoding. Ne vem če je to dejanski vzrok ali kaj bi bilo, lahko pa na telefonu vidite, da se pokaže ikona manjkajoče slike ravno zaradi tega, ker ne dekodira uspešno.
Gmail ne podpira več embeded slik. Vrjetno bi morala biti slika kot priloga in v src linku CID do priloge.
Je možno to kako popraviti? Hvala!
Zdravo,
Sem našel način kako lahko dodate sliko UPN v prilogo.
/**
* Add content to the WC emails.
*
* @param WC_Order $order Order object.
* @param bool $sent_to_admin Sent to admin.
* @param bool $plain_text Email format: plain text or HTML.
*/
public function upn_instructions($order, $sent_to_admin, $plain_text = false)
{
if (!$sent_to_admin && 'bacs' === $order->get_payment_method() && $order->has_status('on-hold')) {
if ($this->instructions) {
echo wp_kses_post(wpautop(wptexturize($this->instructions)) . PHP_EOL);
}
$this->genUPNDescription($order);
$png=base64_decode($this->genUPN($order));
add_filter( 'woocommerce_email_attachments', function ($attachments, $object) use ($png) {if (!empty($png)) {
// Create a temporary file name
$filename = tempnam(sys_get_temp_dir(), '') . '.png';
// Save the image to the temporary file
$gdImg=imagecreatefromstring($png);
imagepng($gdImg, $filename);
// Add the temporary file to the attachments array
$attachments[] = $filename;
return $attachments;
}
}, 10, 2 );
}
}
Hej,
naj samo dodam, da je potrebno, zato da gregatova koda deluje, dodati še return statement na koncu genUPN
funkcije v isti datoteki.
if (!empty($png)) {
$data = base64_encode($png);
// Check for base64 errors
if ($data !== false) {
// Success
echo "<br/><img src='data:image/png;base64,$data'><br/>";
return ($data); // added this line
}
}
Kot omenjeno v naslovu UPN in QR koda se ne prikažeta v poslani e-pošti ko je zaključeno naročilo (se pa pojavi na spletnem mestu, ko se zaključi nakup) samo ker veliko ljudi to spregleda je dobro imeti ta UPN in QR kodo tudi na emailu (stranki).
Vem da je malo možnosti, da se to kaj popravi/nastavi, samo za vsak slučaj vam pa tukaj pišem.
Lep pozdrav