Najniža cijena u zadnjih 30 dana na WooCommerceu
Uz svako istaknuto sniženje mora stajati najniža cijena iz trideset dana prije njega. WooCommerce tu povijest ne vodi, pa je netko mora voditi umjesto njega.
Što se točno mora prikazati
Kad trgovac istakne sniženje, uz novu cijenu mora stajati i najniža cijena po kojoj je artikl bio u prodaji u 30 dana prije tog sniženja. Pravilo dolazi iz Omnibus direktive EU 2019/2161 i preneseno je u Zakon o zaštiti potrošača. Ne odnosi se na svaku cijenu nego na svaku istaknutu povoljniju cijenu: precrtani iznos, postotak popusta, natpis akcija.
Broj koji se ispisuje nije redovna cijena i nije najniža cijena ikad. To je najniža cijena koju je taj artikl imao u prozoru od trideset dana koji prethodi sniženju.
Zašto WooCommerce to ne može sam
WooCommerce pamti trenutno stanje, ne povijest. Proizvod ima _regular_price i _sale_price i kad ih promijenite, prijašnja vrijednost jednostavno nestane. Nema tablice u koju bi se upisalo što je artikl stajao prošlog utorka.
Zato dodatak koji vam prvog dana ponudi gotov broj ili gleda u _regular_price, ili upiše današnju cijenu kao da je bila i jučer. Prvo je posebno neugodno u trgovinama koje cijene uvoze iz ERP-a: ondje je _regular_price često MSRP proizvođača, a tuđa preporučena cijena nije cijena po kojoj ste vi prodavali.
Kako ovaj dodatak računa
Jednom dnevno, u sat koji sami odredite, prođe kroz katalog i za svaki artikl zabilježi cijenu koju kupac stvarno vidi. Ne polje iz baze nego rezultat funkcije wc_get_price_to_display(), dakle iznos s PDV-om i nakon svih filtera koje su postavili drugi dodaci za popuste i dinamičke cijene.
- Unutar istog dana pamti se najniža viđena cijena. Ako je sniženje počelo u deset ujutro, cijena prije njega tog je dana i dalje bila na snazi, pa je prema kupcu pošteno uzeti nižu.
- Prozor je klizni: gleda se svaki snimljeni dan koji nije stariji od trideset dana, i uzima najmanja vrijednost među njima.
- Ispod dva različita snimljena dana ne tvrdi se ništa. Prag je postavka, ali podizanje ga čini strožim, ne blažim.
- Povijest se čuva sto dana, pa promjena prozora s trideset na, recimo, četrdeset pet ne ostavlja rupu.
- Varijacije se računaju svaka za sebe. Varijabilni roditelj dobiva najnižu vrijednost među varijacijama, i to samo kad je ima baš svaka. Da je dovoljna jedna, roditelj bi tvrdio broj koji vrijedi za dio ponude, a kupac bi ga pročitao kao da vrijedi za cijelu.
Što se vidi dok povijesti nema
Ništa. To je namjerno: prazno mjesto uz cijenu manja je šteta od broja koji ne možete potkrijepiti ako vas netko pita odakle vam.
Umjesto toga, u WooCommerce → Cijene i cjenik stoji popis artikala koji se prikazuju sa sniženjem, a nemaju pokriće. Isti se broj pojavi i kao upozorenje na nadzornoj ploči. To je popis onoga što treba riješiti: ili maknuti isticanje sniženja s tih artikala dok se povijest ne skupi, ili uvesti povijest koju već imate.
Uvoz povijesti iz ERP-a
Povijest se ne može izmisliti, ali se vrlo često već negdje nalazi. KIS, KISERP, Pantheon i Synesis vode zapise o promjenama cijena, a mnogi trgovci imaju i stare cjenike u Excelu.
Uvoz prima jedan red po artiklu i danu. Dani koje je dodatak već sam snimio ne prepisuju se, jer je vlastita snimka vjerodostojnija od naknadnog unosa.
Cijela snimljena povijest izvozi se natrag u CSV jednim klikom, sa šifrom, nazivom, datumom i cijenom za svaki zabilježeni dan. To je dokument koji se prilaže kad netko zatraži dokaz.
SIFRA;GGGG-MM-DD;CIJENA
0100071;2026-09-10;25,00
0100071;2026-09-11;24,50
0100072;2026-09-10;39,90Gdje se ispisuje na trgovini
Na klasičnim temama dodatak se sam umeće ispod cijene, na woocommerce_single_product_summary. Blokovske teme i teme po mjeri taj hook često nemaju, pa postoje tri izlaza koja rade svugdje.
Tekst se mijenja u postavkama, bez diranja koda. Zadano piše Najniža cijena u zadnjih 30 dana: iznos, a filter klikoteka_cijene_redovi daje zadnju riječ temi ako treba drukčiji raspored.
Zadano se ispisuje samo uz istaknuto sniženje, jer je tada i obvezno. Postavkom se može prikazivati uvijek, i u popisu proizvoda uz kategorije i pretragu.
[klikoteka_cijene]
<?php do_action( 'klikoteka_cijene', $product ); ?>
<?php echo klikoteka_cijene_html( $product ); ?>Često pitano
Može li se najniža cijena izračunati za trideset dana unatrag, od danas?
Ne. WooCommerce ne čuva povijest prikazanih cijena, pa je nema iz čega rekonstruirati. Jedini pošten način je uvesti je iz sustava koji je vodio, recimo iz ERP-a. Sve ostalo je pogađanje predstavljeno kao činjenica.
Računa li se cijena s PDV-om ili bez njega?
Snima se ono što kupac vidi na stranici proizvoda, dakle u skladu s postavkama trgovine za prikaz poreza. Na hrvatskim B2C trgovinama to je cijena s PDV-om.
Što ako mijenjam cijenu nekoliko puta dnevno?
Dnevna snimka bilježi jednu vrijednost po danu. Ako se cijena tog dana mijenjala između dvije snimke, zabilježi se najniža koju je dodatak vidio. Za trgovine s čestim promjenama unutar dana veličina serije i sat snimanja su postavka, a snimka se može pokrenuti i ručno.
Usporava li dnevna snimka trgovinu?
Obrada ide u serijama, s pokazivačem koji pamti dokle se stiglo, pa se katalog od nekoliko tisuća artikala obradi u više kratkih prolaza umjesto u jednom dugom. Prekinuta snimka nastavlja ondje gdje je stala. Veličina serije se smanjuje ako poslužitelj prekida obradu.
Što ako trgovina ima malo prometa?
Vrijedi znati unaprijed: WordPressov raspored zadataka pokreće se posjetom stranici, pa na trgovini koju nitko ne otvori danima dnevna snimka zna kasniti. Rješenje je pravi cron na poslužitelju, jedan redak u crontabu, i upute su u priloženom readmeu. Snimka se u svakom trenutku može pokrenuti i ručno iz admina.
Radi li s WPML-om i višejezičnim trgovinama?
Da. Povijest se veže uz ID artikla, pa svaki prijevod nosi svoju. Ako prijevodi dijele cijenu, dijelit će i vrijednosti.
Ostalo u istom dodatku
Sidrena cijena na referentni dan
Cijena na dan koji odaberete, istaknuta uz redovnu cijenu kroz razdoblje koje odredite.
Cjenik u strojno čitljivom obliku
Dnevni izvoz cijelog kataloga u CSV, XML i JSON na stalnoj adresi, s arhivom.
Sidrena cijena i cjenik za WooCommerce
Sve tri funkcije, jednokratno 20,00 € + PDV.
