woocart / woocommerce-upn

Prikaže podatke za nakazilo in UPN Nalog s QR kodo ob koncu naročila, v sporočilu da je bilo naročilo sprejeto in pod pregledom naročil.
MIT License
14 stars 6 forks source link

UPN in QR koda se ne pojavita v poslanem emailu #6

Open SloZiga opened 2 years ago

SloZiga commented 2 years ago

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

dz0ny commented 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

SloZiga commented 2 years ago

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".

SloZiga commented 2 years ago

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

dz0ny commented 2 years ago

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.

SloZiga commented 2 years ago

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);"

dz0ny commented 2 years ago

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 ));
}
SloZiga commented 2 years ago

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)

priklop commented 1 year ago

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.

dz0ny commented 1 year ago

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.

grega1337 commented 1 year ago

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!

grega1337 commented 1 year ago

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 );
          }
        }
brezimenko commented 10 months ago

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