Narudzbe se vise ne salju u Solo
-
Pozdrav,
Sve je bilo radilo normalno, no odjednom su narudzbe prestale slati u Solo, same od sebe.
Nije mi istekla licenca bila, niti sam ista mijenjao bio, osim sto sam updateao WP i WC.U settingsima sam testirao radi li povezanost sa mojim Solo racunom, i radi jer je povukao sa API-a moje racune na Solou.
Ne znam od kud da krenem, nisam imao upaljen debug, pa nemam neki log, a ako krenem stavljat random narudzbe, necu ih moc maknut iz Soloa
-
Da, evo upravo sam ju instalirao, pa isao onda testirat.
Stavio sam WP Crontrol, i jos neki cron manager plugin, cisto da imam 2 razlicita prikaza cron eventsa, i ni na jednom nema za solo cron event.Jel bi i on trebao ovako nekako izgledat?
“action_scheduler_run_queue, pa onda next run datum i vrijeme, neki Action, i recurrence”EDIT: Mogu li ja mozda nekako rucno napravit novi cron event preko crontrola ili cron managera?
-
This reply was modified 6 months, 3 weeks ago by
crosscriss.
Jedan cron event se zove:
makeApiCall
, drugi se zovesendCustomerEmail
.Kada vam se izvrsava upit prema solo servisu? Na checkout ili na promijenu statusa u completed?
Stavio sam na promijenu statusa u completed.
Nikako ne mogu skuzit sto ga je strgalo jer ja sam jedini dev na webu, i nisam nista mijenjao osim updateao redovno pluginove, dodao sam bio automatewoo jedino, ali kazem, izbrisao sam ga. Sad sam probao ponovno reinstalirat solo plugin, i dalje se ne triggera action.
Kao da se nije ni registrirao uopce ovaj:
add_action(‘woocommerce_order_status_completed’, [$this, ‘sendApiRequestOnOrderCompleted’], 30, 1);
Kada stavite
error_log(print_r('REGISTERED!', true));
unutarregister
metode uMakeApiRequest
klasi, i pogledate logove, da li vidite taj string? Jer ako da, onda se registriraju ti hookovi i sve radi, ako ne, onda je negdje problem nastao.Jel to sprema log u debug.log file ili neki drugi?
Idem odmah probat pa da znam gdje trazit.
EDIT: Znam gdje gledat error_log.
Ne znam samo jel bi se register trebao triggerat na pocetku odmah, cim saveam file, ili ako dode do pokretanja tog hooka.-
This reply was modified 6 months, 3 weeks ago by
crosscriss.
Register bi se trebao okinuti na pocetku requesta. Znaci bilo koji reload fronta, admina i slicno bi ga trebao okinuti.
Evo ga:
17-Jan-2024 13:09:59 UTC] REGISTERED!
[17-Jan-2024 13:10:01 UTC] REGISTERED!
[17-Jan-2024 13:10:01 UTC] REGISTERED!
[17-Jan-2024 13:10:16 UTC] REGISTERED!
[17-Jan-2024 13:10:26 UTC] REGISTERED!
[17-Jan-2024 13:10:26 UTC] REGISTERED!Ok, znaci da plugin ok registrira hookove. Iduci korak je da se error log stavi u jedan od dva callbacka – u vasem slucaju unutar
sendApiRequestOnOrderCompleted
metode.On bi se trebao okinuti kada se status narudzbe promijeni u completed.
Stavio sam 2 error loga.
1. sam stavio odmah nakon definije metode:public function sendApiRequestOnOrderCompleted(int $orderId): void { error_log(print_r('FUNCTION COMPLETED AND REGISTERED!', true)); ......
2. sam stavio nakon if === ‘completed’
if ($orderStatus === 'completed') { error_log(print_r('IF COMPLETED AND REGISTERED!', true));
1. se pojavio u logu, drugi nije.
[17-Jan-2024 13:24:11 UTC] FUNCTION COMPLETED AND REGISTERED!
Koji je
$orderStatus
?[17-Jan-2024 14:07:48 UTC] processing
Tu sam ga stavio:
// Execute only if status is changed to completed! $orderData = $order->get_data(); $orderStatus = $orderData['status']; error_log(print_r($orderStatus, true));
Cudno mi je da je processing, kad sam kliknuo na narudzbu i stavio na Zavrseno
EDIT: Samo da napomenem, iz “U obradi” (processing) sam ju prebacio u Zavrseno. pa mi je cudno da je orderstatus stari, a ne novi u koji sam ju prebacio
-
This reply was modified 6 months, 3 weeks ago by
crosscriss.
-
This reply was modified 6 months, 3 weeks ago by
crosscriss.
Da, trebao bi biti novi order pogotovo jer se okine na hook koji sluzi da se okine kad se prebaci status u completed. Morat cu istraziti to malo da vidim da li mi se desava slicno.
Moguce da se dogadja da se hook okine i onda metoda izvrti prije nego server izvrsi promjenu u completed.
Ne znam sad tocno redoslijed, ali kad ja kliknem na Dovrseno, pokrene se nekoliko async stvari, i onda ova za solo api vjerojatno zavrsi prije nego se izvrsi promjena order statusa u completed-
This reply was modified 6 months, 3 weeks ago by
crosscriss.
Nasao sa rijesenje koje meni funckionira.
Napravio sam ove promjene u kodu:{ add_action('woocommerce_email_order_details', [$this, 'sendApiRequestOnCheckout'], 15, 4); add_action('woocommerce_order_status_changed', [$this, 'sendApiRequestOnOrderCompleted'], 30, 3); }
onaj hook sam zamjenio sa ‘woocommerce_order_status_changed’ jer taj hook ima $old_status i $new_status parametre. Dok woocommerce_order_status_completed se triggera odmah, kad se napravi zahtjev za promjenom statusa u completed, ali se moze dogoditi da se sam order jos nije izmjenio (njegov status u completed), sto je kod mene problem bio.
I onda sam if provjeru samo prilagodio:if (!is_admin() || $old_status === $new_status || $new_status !== 'completed') { return; }
i tu:
if ($new_status === 'completed') {...}
Definicija metode izgleda ovako sada:
public function sendApiRequestOnOrderCompleted(int $orderId, $old_status, $new_status): void
Sada sve radi normalno
-
This reply was modified 6 months, 2 weeks ago by
crosscriss.
-
This reply was modified 6 months, 2 weeks ago by
crosscriss.
-
This reply was modified 6 months, 2 weeks ago by
crosscriss. Reason: code looked ugly
Nisam jos provjerio, ali cu pogledati i testirat pa mogu updateati kod na pluginu. Hvala!
-
This reply was modified 6 months, 3 weeks ago by
- The topic ‘Narudzbe se vise ne salju u Solo’ is closed to new replies.