Omnibus w WooCommerce: najniższa cena z 30 dni

Omnibus w WooCommerce: najniższa cena z 30 dni

Ostatnio zweryfikowano: 27 października 2026
24 min czytania
Przewodnik
Ekspert WooCommerce

Od 1 stycznia 2023 r. każda informacja o obniżce ceny w polskim sklepie internetowym musi stać obok najniższej ceny tego produktu z 30 dni przed obniżką. Tak stanowi art. 4 ust. 2 ustawy o informowaniu o cenach towarów i usług, który wdraża art. 6a dyrektywy 98/6/WE w brzmieniu nadanym dyrektywą Omnibus. WooCommerce nie przechowuje historii cen, więc tę liczbę musi policzyć wtyczka albo własny kod. Ten tekst pokazuje, co dokładnie mówi przepis, jak powinna działać historia cen w WooCommerce, w jakie pułapki wpada typowa implementacja i jak w godzinę sprawdzić, czy twój sklep pokazuje poprawną liczbę.

Artykuł opisuje treść przepisów i działanie oprogramowania na dzień publikacji. Nie jest indywidualną poradą prawną dla twojego sklepu.

#Co dokładnie wymaga dyrektywa Omnibus przy obniżkach cen

Dyrektywa (UE) 2019/2161, nazywana dyrektywą Omnibus (EUR-Lex), dopisała do dyrektywy 98/6/WE o podawaniu cen nowy art. 6a (EUR-Lex, tekst skonsolidowany). Artykuł ma pięć ustępów:

  1. Każde ogłoszenie obniżki ceny podaje cenę poprzednią, którą przedsiębiorca stosował przez określony czas przed obniżką.
  2. Cena poprzednia to najniższa cena stosowana przez przedsiębiorcę w okresie nie krótszym niż 30 dni przed zastosowaniem obniżki.
  3. Państwa członkowskie mogą przyjąć inne zasady dla towarów, które szybko się psują albo tracą przydatność.
  4. Dla produktu obecnego na rynku krócej niż 30 dni państwa mogą przewidzieć krótszy okres.
  5. Państwa mogą postanowić, że przy obniżce stopniowo zwiększanej ceną poprzednią jest cena bez obniżki sprzed pierwszego jej zastosowania.

Polska przeniosła ten artykuł do art. 4 ustawy z 9 maja 2014 r. o informowaniu o cenach towarów i usług. Obecny tekst jednolity to Dz.U. 2023 poz. 168, a nowe ust. 2-5 obowiązują od 1 stycznia 2023 r. Rdzeń obowiązku jest w ust. 2:

W każdym przypadku informowania o obniżeniu ceny towaru lub usługi obok informacji o obniżonej cenie uwidacznia się również informację o najniższej cenie tego towaru lub tej usługi, która obowiązywała w okresie 30 dni przed wprowadzeniem obniżki.

Źródło: art. 4 ust. 2 ustawy o informowaniu o cenach towarów i usług, tekst jednolity Dz.U. 2023 poz. 168 (ISAP).

Z tego zdania wynikają cztery wymagania techniczne dla sklepu. Liczba ma stać obok obniżonej ceny, więc nie wystarczy jej schować w zakładce z opisem. Okno liczysz przed wprowadzeniem obniżki, czyli wstecz od dnia startu promocji. Chodzi o cenę, która obowiązywała, więc liczy się cena, po której klient faktycznie mógł kupić. Cena wpisana w panelu na przyszłość jeszcze nie obowiązuje. Wreszcie przepis obejmuje towary i usługi, więc sklep sprzedający kursy, konsultacje albo bony na usługi przez WooCommerce też musi to pokazywać.

Dwa przepisy z tej samej ustawy wpływają na implementację. Art. 3 ust. 2 mówi, że w cenie uwzględnia się podatek od towarów i usług oraz akcyzę, czyli konsument widzi kwoty brutto. Art. 4 ust. 5 każe stosować ust. 1-4 odpowiednio do reklamy towaru lub usługi wraz z ceną. Baner na stronie głównej z obniżoną ceną albo newsletter z ceną promocyjną podlega więc tej samej zasadzie co karta produktu.

Sposób pokazywania cen opisuje rozporządzenie Ministra Rozwoju i Technologii z 19 grudnia 2022 r. w sprawie uwidaczniania cen towarów i usług (Dz.U. 2022 poz. 2776, ISAP). Jego § 3 ust. 1 mówi, że informację o obniżonej cenie uwidacznia się na towarze, bezpośrednio przy nim albo w jego bliskości, w miejscu dobrze widocznym dla konsumenta. Dla sklepu internetowego najprościej czytać to tak: wszędzie, gdzie widać przekreśloną cenę i cenę promocyjną, widać też najniższą cenę z 30 dni.

Kary są w art. 6 ustawy. Za niewykonanie obowiązków z art. 4 ust. 1-5 wojewódzki inspektor Inspekcji Handlowej nakłada w drodze decyzji karę pieniężną do 20 000 zł. Jeśli przedsiębiorca naruszył te obowiązki co najmniej trzy razy w ciągu 12 miesięcy, kara może wynieść do 40 000 zł. Przy ustalaniu wysokości inspektor bierze pod uwagę między innymi skalę i czas trwania naruszenia oraz obroty przedsiębiorcy. Ochroną konsumentów w szerszym zakresie zajmuje się UOKiK, a jego Prezes opiniuje rozporządzenie o uwidacznianiu cen (art. 4 ust. 6 ustawy).

#Kiedy 30 dni liczy się inaczej

Ust. 2 opisuje typowy przypadek. Trzy kolejne sytuacje zmieniają sposób liczenia albo wymagają od sklepu decyzji.

#Produkt w sprzedaży krócej niż 30 dni

Art. 4 ust. 3 ustawy: jeśli towar lub usługa są oferowane krócej niż 30 dni, pokazujesz najniższą cenę od dnia rozpoczęcia oferowania do dnia wprowadzenia obniżki. Dla historii cen oznacza to, że okno nie zawsze ma 30 dni. Zaczyna się od pierwszego wpisu ceny produktu, jeśli ten wpis jest młodszy niż 30 dni.

Tu kryje się pułapka dla sklepów, które dopiero instalują wtyczkę. Produkt sprzedawany od dwóch lat ma w nowej wtyczce historię zaczynającą się dzisiaj. Wtyczka nie wie, że produkt jest stary, i nie ma żadnego wpisu sprzed instalacji. Dlatego sensowna wtyczka ma ustawienie na przypadek braku historii, a ty musisz świadomie zdecydować, co sklep pokazuje przez pierwsze 30 dni po instalacji. Najbezpieczniej jest nie uruchamiać nowych obniżek, dopóki historia nie obejmie pełnego okna, albo zaimportować historię z poprzedniej wtyczki, jeśli taka istniała.

#Towary szybko psujące się

Art. 4 ust. 4: przy towarach, które szybko się psują albo mają krótki termin przydatności, pokazujesz cenę sprzed pierwszego zastosowania obniżki, a terminy z ust. 2 i 3 nie mają zastosowania. Sklep z żywnością, kwiatami albo produktami z krótką datą potrzebuje więc dwóch trybów liczenia: zwykłego okna 30 dni i trybu “cena sprzed pierwszej obniżki”. Wtyczka powinna pozwolić oznaczyć takie produkty, na przykład kategorią albo polem w produkcie.

#Obniżka zwiększana stopniowo

Dyrektywa w art. 6a ust. 5 pozwala państwom przyjąć regułę, że przy obniżce zwiększanej w kolejnych krokach ceną odniesienia zostaje cena sprzed pierwszego kroku. Polski art. 4 tej opcji nie zawiera, co sprawdzisz w tekście jednolitym: ust. 1-5 nie mówią nic o obniżkach stopniowych.

Przy dosłownym czytaniu ust. 2 każdy kolejny krok jest nową obniżką z własnym oknem 30 dni. Przykład poglądowy: produkt kosztuje 100, w poniedziałek spada do 90, a tydzień później do 80. W chwili drugiego kroku najniższą ceną z 30 dni jest 90, bo ta cena obowiązywała w oknie przed drugą obniżką. Jeśli planujesz kampanie typu “co tydzień taniej”, przekreślona cena i komunikat procentowy muszą być spójne z tą liczbą, inaczej klient zobaczy “-20%” obok najniższej ceny 90 i ceny 80.

#Czy WooCommerce ma wbudowaną najniższą cenę z 30 dni

Nie ma. Sprawdziliśmy kod WooCommerce w gałęzi głównej repozytorium na GitHubie 27 października 2026 r.: wyszukiwanie “omnibus” i “lowest price” nie zwraca nic, a w rdzeniu nie ma tabeli ani pola z historią cen.

Produkt w WooCommerce przechowuje stan bieżący:

DaneMetoda w WC_ProductCo mówi o przeszłości
Cena regularnaget_regular_price()Tylko wartość aktualna
Cena promocyjnaget_sale_price()Tylko wartość aktualna, także gdy promocja jeszcze nie ruszyła
Początek promocjiget_date_on_sale_from()Data planowana, bez śladu poprzednich promocji
Koniec promocjiget_date_on_sale_to()Jak wyżej
Cena aktywnaget_price()Cena obowiązująca teraz

Kiedy zmieniasz cenę, poprzednia wartość znika. Zaplanowaną promocję WooCommerce włącza zadaniem w tle (woocommerce_scheduled_sales), które przestawia cenę aktywną w chwili startu. Po zakończeniu promocji wraca cena regularna, a sklep nie zapisuje, że promocja w ogóle była.

Z tego wynika jedno: najniższej ceny z 30 dni nie da się policzyć z danych WooCommerce ani wstecznie odtworzyć. Potrzebny jest osobny zapis historii, prowadzony od dnia instalacji. Robi to wtyczka albo własny kod. Jeśli zlecasz to programiście, specyfikacja musi opisywać zapis historii i reguły liczenia minimum. Samą etykietę da się dodać w pół godziny, poprawna historia to osobny moduł z testami. Jeśli potrzebujesz takiego modułu albo audytu istniejącego, opisujemy to na stronie programista WooCommerce.

#Jak działa poprawna historia cen w sklepie

Historia cen to tabela wpisów: produkt (albo wariant), cena, waluta, data, od której ta cena obowiązuje. Z niej liczysz minimum w oknie. Brzmi prosto, ale każda z poniższych zasad wzięła się z błędu, który ktoś już popełnił.

#Wpis powstaje, gdy cena zaczyna obowiązywać

Wpis dodajesz w chwili, gdy zmienia się cena aktywna, czyli ta, po której klient może kupić. Zapis produktu w panelu to za mało, bo w tym samym zapisie możesz ustawić promocję na przyszły miesiąc. Jeśli wtyczka zapisze wtedy cenę promocyjną, ta cena trafi do historii, zanim ktokolwiek mógł po niej kupić, i po starcie promocji stanie się “najniższą ceną z 30 dni”. Przy promocji zaplanowanej wpis powinien powstać w chwili, gdy WooCommerce ją uruchamia.

Druga zasada to zmiany w ciągu jednego dnia. Jeśli rano obniżasz cenę, a po południu ją cofasz, przez kilka godzin klient mógł kupić taniej. Historia, która zapisuje tylko jedną cenę dziennie, zgubi tę zmianę, a ta cena obowiązywała.

#Okno liczysz od startu obniżki

Okno 30 dni kończy się w chwili wprowadzenia obniżki i nie przesuwa się razem z dzisiejszą datą. Przykład poglądowy: promocja ruszyła 1 listopada i trwa trzy tygodnie. 15 listopada najniższą ceną z 30 dni jest nadal minimum z okresu od 2 października do 31 października. Jeśli wtyczka liczy “ostatnie 30 dni od dzisiaj”, po kilku dniach promocji do okna wpada sama cena promocyjna i sklep pokazuje “najniższa cena z 30 dni: 80” obok ceny 80. Taki komunikat nic nie mówi klientowi i jest sprzeczny z przepisem.

#Cena obowiązująca w chwili otwarcia okna

To przypadek, na którym potyka się większość prostych implementacji. Wpisy powstają tylko przy zmianie ceny. Przykład poglądowy: produkt kosztuje 100 przez 40 dni, a dziś wchodzi obniżka do 80. Ostatni wpis z ceną 100 ma 40 dni, więc w oknie 30 dni nie ma żadnego wpisu. Zapytanie “minimum z wpisów z ostatnich 30 dni” zwróci pusty wynik albo samą cenę 80.

Poprawna logika bierze minimum z dwóch źródeł: wpisów z wnętrza okna oraz ostatniego wpisu sprzed początku okna, bo ta cena nadal obowiązywała w chwili, gdy okno się otwierało. W tym przykładzie wynik to 100. Ten sam warunek dotyczy czyszczenia historii: zadanie, które usuwa wpisy starsze niż 30 dni, nie może usunąć ostatniego wpisu sprzed okna, bo jest jedynym dowodem na cenę 100.

#Waluta zapisana przy każdym wpisie

Sklep, który zmienił walutę podstawową, albo sklep z wtyczką wielowalutową ma w historii ceny w różnych walutach. Każdy wpis musi mieć walutę, a zapytanie o minimum musi filtrować po walucie, w której klient właśnie ogląda produkt. Inaczej obok ceny w euro pojawi się najniższa cena w złotych, albo minimum z liczb, których nie da się porównać.

#Podatek tak samo jak cena obok

Art. 3 ust. 2 ustawy mówi, że cena dla konsumenta zawiera VAT. WooCommerce pozwala wpisywać ceny netto albo brutto i osobno ustawić, jak je wyświetla w sklepie i w koszyku. Najniższa cena musi przejść przez te same ustawienia wyświetlania co cena obok niej, na przykład przez wc_get_price_to_display(). Jeśli sklep wpisuje ceny netto, a pokazuje brutto, surowa liczba z historii będzie niższa o podatek i wprowadzi klienta w błąd.

#Produkt zmienny liczony per wariant

Produkt zmienny w WooCommerce nie ma własnej ceny. Ceny mają warianty, a karta produktu pokazuje przedział. Historia musi być prowadzona dla każdego wariantu osobno, a informacja o najniższej cenie powinna się pojawić po wybraniu wariantu, razem z jego ceną. Na liście produktów, gdzie widać przedział, sklep potrzebuje przemyślanej reguły, na przykład pokazania informacji dla wariantu, który wyznacza dolną granicę przedziału.

#Czyszczenie historii zostawia wpis sprzed okna

Historia rośnie z każdą zmianą ceny, więc wtyczka ją przycina. Zadanie czyszczące usuwa stare wpisy, ale dla każdego produktu zostawia ostatni wpis sprzed okna. To zadanie musi też działać po aktualizacji wtyczki, bez ponownej aktywacji.

#Jak policzyć najniższą cenę z 30 dni dla promocji zaplanowanej

Promocja zaplanowana to najczęstsze źródło błędnych liczb, bo w panelu WooCommerce cena promocyjna istnieje, zanim zacznie obowiązywać. Przykład poglądowy krok po kroku:

  1. Produkt kosztuje 100 od dawna. Historia ma jeden wpis: 100, sprzed 60 dni.
  2. 20 października ustawiasz cenę promocyjną 80 z datą startu 1 listopada i zapisujesz produkt.
  3. Do 31 października klient płaci 100. Historia nie może mieć wpisu 80, bo ta cena nie obowiązywała.
  4. 1 listopada WooCommerce uruchamia promocję. W tej chwili historia dostaje wpis 80.
  5. Okno to 2-31 października. Wewnątrz okna nie ma wpisów, więc liczy się wpis sprzed okna: 100.
  6. Sklep pokazuje cenę 80, przekreśloną 100 i informację “najniższa cena z 30 dni przed obniżką: 100”.
  7. 15 listopada wynik jest taki sam, bo okno jest przypięte do 1 listopada.

Jeśli w kroku 2 wtyczka zapisze 80 do historii od razu, w kroku 6 pokaże najniższą cenę 80. Jeśli w kroku 5 zignoruje wpis sprzed okna, nie pokaże nic albo pokaże 80. Jeśli w kroku 7 liczy okno od dzisiaj, pokaże 80. Każdy z tych wyników to inny błąd, a wszystkie trzy wyglądają w sklepie tak samo.

#Co psuje się w praktyce przy liczeniu najniższej ceny

Każda implementacja historii cen, gotowa wtyczka albo kod pisany na zamówienie, może wpaść w te same pułapki. Poniżej opisujemy każdą z nich: skąd się bierze, jak ją wykryć we własnym sklepie i co robi poprawna implementacja.

#Promocja zaplanowana zapisana przed startem

Skąd się bierze. Implementacja zapisuje historię przy zapisie produktu w panelu. Jeśli w tym zapisie ustawiasz promocję na przyszły tydzień, cena promocyjna trafia do historii, zanim zacznie obowiązywać, i może zostać najniższą ceną z 30 dni.

Jak to wykryć. Ustaw promocję na jutro i sprawdź kartę produktu po jej starcie. Jeśli najniższa cena równa się cenie promocyjnej, historia zapisała promocję za wcześnie.

Co robi poprawna implementacja. Zapisuje tylko trwającą promocję, w chwili gdy WooCommerce ją uruchamia.

#Cena promocyjna podana jako najniższa

Skąd się bierze. Okno 30 dni jest liczone od dzisiejszej daty. Po kilku dniach promocji jej cena wpada do okna i staje się minimum. Ten sam efekt daje historia, która zapisuje jedną cenę dziennie i gubi zmiany w ciągu dnia.

Jak to wykryć. Na produkcie w promocji porównaj cenę promocyjną z “najniższą ceną z 30 dni”. Jeśli są równe, a produkt przed promocją kosztował więcej, liczenie jest złe.

Co robi poprawna implementacja. Kończy okno w chwili startu obniżki i zapisuje każdą zmianę ceny aktywnej, także kilka zmian jednego dnia.

#Brak wpisu w oknie dla produktu o stałej cenie

Skąd się bierze. Wpisy powstają tylko przy zmianie ceny, więc produkt z ceną bez zmian przez ponad 30 dni nie ma żadnego wpisu w oknie. Zapytanie liczące minimum tylko z wpisów wewnątrz okna nie znajduje nic. Czyszczenie historii, które usuwa wszystko starsze niż 30 dni, kasuje jedyny dowód na cenę sprzed obniżki.

Jak to wykryć. Weź produkt, którego cena nie zmieniała się od ponad miesiąca, i obniż ją. Informacja musi pokazać starą cenę.

Co robi poprawna implementacja. Liczy minimum z wpisów w oknie plus ostatniego wpisu sprzed okna, a czyszczenie zawsze ten wpis zostawia.

#Najniższa cena w innej walucie

Skąd się bierze. Historia zapisuje kwoty bez waluty albo zapisuje walutę, ale zapytanie o minimum jej nie używa. Sklep, który zmienił walutę podstawową, albo sklep z wtyczką wielowalutową przełączającą walutę dla każdego żądania pokazuje wtedy najniższą cenę w jednej walucie obok ceny w innej.

Jak to wykryć. Przełącz walutę w sklepie i obejrzyj produkt w promocji. Najniższa cena musi być w tej samej walucie co cena sprzedaży.

Co robi poprawna implementacja. Zapisuje walutę przy każdym wpisie i filtruje minimum po walucie bieżącego żądania.

#Ustawienia, które dają niezgodny wynik

Skąd się bierze. Wtyczki mają zwykle ustawienia długości okna i zachowania w przypadkach brzegowych. Część z nich prowadzi do wyniku niezgodnego z prawem: okno krótsze niż 30 dni, opcja “dzisiaj” jako źródło najniższej ceny albo pokazywanie bieżącej ceny jako najniższej.

Jak to wykryć. Przejrzyj ustawienia wtyczki Omnibus w swoim sklepie: długość okna i zachowanie przy braku historii.

Co robi poprawna implementacja. Ma domyślne ustawienia zgodne z przepisem i ostrzega, gdy ktoś je zmienia na niezgodne.

#Brak informacji w siatkach produktów motywu blokowego

Skąd się bierze. W motywach blokowych listy produktów buduje blok Product Collection. WooCommerce uruchamia klasyczne haki pętli produktów tylko w siatce sklepu, więc implementacja oparta na tych hakach nie pokazuje informacji na stronie głównej, w produktach powiązanych ani w cross-sell w koszyku. Przy dwóch źródłach wyświetlania ta sama informacja może się też pojawić dwa razy.

Jak to wykryć. Wstaw na stronę główną blok Product Collection z produktem w promocji i sprawdź, czy przy przekreślonej cenie jest najniższa cena z 30 dni, i to tylko raz.

Co robi poprawna implementacja. Dodaje informację w każdej siatce, która pokazuje przekreśloną cenę, niezależnie od bloku albo szablonu.

#Brak informacji na karcie produktu z szablonu Elementor Pro

Skąd się bierze. Szablon karty produktu w Elementor Pro zastępuje hak woocommerce_single_product_summary. Implementacja, która dopina informację tylko do tego haka, na takiej karcie nie pokazuje nic.

Jak to wykryć. Otwórz produkt w promocji na karcie zbudowanej w Elementorze i sprawdź, czy informacja stoi przy cenie.

Co robi poprawna implementacja. Obsługuje szablony kreatora albo dodaje informację na poziomie wyświetlania ceny.

#Import historii liczący promocję, która tylko była zaplanowana

Skąd się bierze. Import ze starej wtyczki czyta surowe pole ceny promocyjnej. To pole zawiera także promocje tylko zaplanowane, więc cena, po której nikt nie kupił, trafia do historii jako cena sprzedaży.

Jak to wykryć. Po imporcie porównaj najniższą cenę dla produktu, który miał zaplanowaną, ale niewystartowaną promocję, z ceną, po której faktycznie sprzedawał.

Co robi poprawna implementacja. Przenosi tylko ceny, które obowiązywały, z datami i walutą.

#Dane strukturalne nadpisane liczbą z historii

Skąd się bierze. Implementacja wstawia najniższą cenę z 30 dni do JSON-LD produktu w miejsce ceny promocyjnej albo katalogowej z WooCommerce. Wyszukiwarka widzi wtedy inną cenę niż ta, po której klient kupuje.

Jak to wykryć. Otwórz źródło strony produktu w promocji i znajdź blok application/ld+json. Pole price w ofercie musi równać się cenie, którą płaci klient.

Co robi poprawna implementacja. Dodaje najniższą cenę obok ceny promocyjnej i katalogowej, które zostają bez zmian.

#Techniczny prefiks w koszyku

Skąd się bierze. WooCommerce wyświetla dane pozycji koszyka w formacie “etykieta: wartość”. Jeśli informacja o najniższej cenie trafia tam z technicznym kluczem, klient widzi na przykład prefiks “Omnibus:”.

Jak to wykryć. Dodaj produkt w promocji do koszyka i przeczytaj, co stoi pod nazwą pozycji.

Co robi poprawna implementacja. Pokazuje zdanie zrozumiałe bez znajomości wtyczki.

#Czyszczenie historii, które przestaje działać po aktualizacji

Skąd się bierze. Codzienne zadanie przycinające historię jest planowane tylko przy aktywacji wtyczki. Aktualizacja bez ponownej aktywacji zostawia je niezaplanowane.

Jak to wykryć. W WooCommerce otwórz Status, potem Zaplanowane działania (albo listę zadań WP-Cron), i sprawdź, czy zadanie wtyczki Omnibus jest zaplanowane.

Co robi poprawna implementacja. Sprawdza harmonogram po każdej aktualizacji i planuje zadanie ponownie, jeśli go brakuje.

#Zestawienie

PułapkaObjaw w sklepieJak sprawdzić
Promocja zaplanowana zapisana od razuNajniższa cena równa cenie promocyjnej od pierwszego dniaPromocja na jutro, kontrola po starcie
Okno liczone od dzisiajPo kilku dniach promocji najniższa cena spada do ceny promocyjnejTen sam produkt w 1. i 10. dniu promocji
Brak ceny sprzed oknaBrak informacji albo cena promocyjna jako najniższaObniżka produktu o cenie stałej od ponad 30 dni
Waluta pominięta w zapytaniuNajniższa cena w innej walucie niż cena sprzedażyPrzełączenie waluty na produkcie w promocji
Podatek pominiętyNajniższa cena niższa o VATSklep z cenami netto w panelu i brutto na froncie
Brak wariantówBrak informacji po wybraniu wariantuProdukt zmienny z promocją na jednym wariancie
Siatki Product CollectionBrak informacji na stronie głównej i w produktach powiązanychBlok Product Collection z produktem w promocji
Szablon Elementor ProBrak informacji na karcie produktuProdukt w promocji na karcie z Elementora
Import ze starej wtyczkiNajniższa cena z promocji, która nie wystartowałaPorównanie historii przed i po imporcie
JSON-LD nadpisanyInna cena w danych strukturalnych niż na stronieŹródło strony, pole price
Czyszczenie niezaplanowaneHistoria rośnie bez końcaLista zaplanowanych działań

#Jak to robią nasze wtyczki

Rozwijamy dwie wtyczki WooCommerce z obsługą Omnibusa: Polski for WooCommerce i Shoplex. Obie zapisują promocję zaplanowaną dopiero wtedy, gdy WooCommerce ją uruchamia, i obie ostrzegają, gdy okno ustawisz na mniej niż 30 dni. Opcje “dzisiaj” i “pokaż bieżącą cenę jako najniższą” oznaczają jako niezgodne z art. 6a ust. 2 dyrektywy 98/6/WE.

Karta produktu w sklepie demonstracyjnym z wtyczką Shoplex: cena 18,00 EUR przekreślona, cena promocyjna 13,50 EUR, cena jednostkowa i informacja o najniższej cenie z ostatnich 30 dni 16,00 EUR

Karta produktu w sklepie testowym z Shoplex (interfejs po angielsku). Najniższa cena z 30 dni (16,00 EUR) stoi pod ceną promocyjną, w tej samej walucie, razem z ceną jednostkową. Przykład pokazuje też regułę z tego artykułu: najniższa cena z okna nie musi równać się cenie przekreślonej.

Polski dodatkowo zapisuje walutę przy każdym wpisie historii i liczy minimum w walucie, w której klient ogląda produkt. Uwzględnia cenę obowiązującą w chwili otwarcia okna i zmiany ceny w ciągu jednego dnia. Pokazuje informację zgodnie z ustawieniami podatku WooCommerce, przy wariantach produktów zmiennych, w siatkach Product Collection motywów blokowych i na kartach produktu z szablonów Elementor Pro. W danych strukturalnych dodaje najniższą cenę obok ceny promocyjnej i katalogowej. Ma osobne ustawienie na produkty bez historii i potrafi zaimportować historię cen zapisaną przez wtyczkę Omnibus autorstwa iworks.

#Gdzie jeszcze sklep pokazuje obniżkę

Przepis obejmuje każdy przypadek informowania o obniżce, a rozporządzenie każe pokazać informację przy towarze albo w jego bliskości. W WooCommerce przekreślona cena pojawia się w wielu miejscach, a każde z nich renderuje inny kod.

Motywy blokowe. Archiwum sklepu, strona główna, produkty powiązane i cross-sell w koszyku to w motywie blokowym osobne bloki. Wtyczka napisana pod klasyczne haki obsłuży archiwum, a pozostałe siatki zostaną bez informacji. Jeśli przenosisz sklep na motyw blokowy, sprawdź każdą z nich osobno. Różnice między motywami klasycznymi i blokowymi opisujemy w tekście motywy klasyczne a block themes.

Kreatory stron. Elementor Pro, a także inne kreatory z własnymi szablonami karty produktu, zastępują standardowe haki WooCommerce. Informacja musi być podpięta do miejsca, którego używa kreator, albo do samej ceny.

Koszyk i podsumowanie zamówienia. Jeśli koszyk pokazuje przekreśloną cenę, pokazuje obniżkę. Tekst informacji ma być czytelny dla klienta, bez nazw technicznych.

Dane strukturalne. Dane produktu w JSON-LD czyta wyszukiwarka, a z nich powstają wyniki z ceną. Pole price w ofercie powinno pozostać ceną sprzedaży, którą płaci klient. Najniższa cena z 30 dni nie zastępuje ani ceny promocyjnej, ani ceny katalogowej.

Cenniki progowe i ceny dla grup. Sklep z cenami zależnymi od ilości albo od roli klienta ma kilka cen naraz dla tego samego produktu. Zanim wybierzesz wtyczkę Omnibus, sprawdź, jaką cenę traktuje jako cenę aktywną i czy cena dla grupy klientów trafia do historii. Architekturę takich cen opisujemy w tekście o cenach schodkowych i jednostkowych w WooCommerce B2B.

Reklama z ceną. Art. 4 ust. 5 rozciąga obowiązek na reklamę towaru lub usługi wraz z ceną. Baner promocyjny na stronie, który podaje obniżoną cenę, i newsletter z ceną promocyjną to treści, które przygotowujesz poza kartą produktu, więc liczbę z historii trzeba tam przenieść ręcznie albo przez integrację.

#Jak zmienić wtyczkę Omnibus bez utraty historii cen

Historia cen jest jedynym dowodem na to, jaka cena obowiązywała przed obniżką. Zmiana wtyczki bez importu zeruje ją, a sklep na 30 dni wraca do sytuacji “brak historii”.

Przed zmianą sprawdź trzy rzeczy:

  1. Czy nowa wtyczka importuje historię z obecnej. Polski for WooCommerce importuje historię z wtyczki Omnibus autorstwa iworks. Dla innych par wtyczek sprawdź dokumentację albo poproś programistę o skrypt migracji.
  2. Co dokładnie jest importowane. Import ma przenieść ceny, które obowiązywały, z datami i walutą. Surowe pole ceny promocyjnej nie wystarczy, bo zawiera także promocje tylko zaplanowane.
  3. Jak nowa wtyczka zachowuje się bez historii. Dla produktów, których import nie objął, wtyczka użyje ustawienia na brak historii. Sprawdź, co wtedy pokazuje, zanim uruchomisz obniżki.

Najbezpieczniejsza kolejność to: kopia bazy, instalacja nowej wtyczki obok starej, import, porównanie najniższych cen na kilku produktach w obu wtyczkach, dopiero potem wyłączenie starej. Jeśli w historii obu wtyczek dla tego samego produktu wychodzą różne liczby, ustal przyczynę przed wyłączeniem starej, bo po wyłączeniu nie będzie z czym porównać.

#Jak sprawdzić, czy twój sklep pokazuje poprawną najniższą cenę

Poniższy test zajmuje około godziny na kopii sklepu (staging). Liczby są poglądowe, a każdy krok mówi, jaki wynik jest poprawny.

  1. Promocja zaplanowana. Wybierz produkt o cenie 100, która nie zmieniała się od ponad 30 dni. Ustaw promocję 80 z datą startu jutro. Dziś karta produktu nie może pokazywać ani ceny 80, ani informacji o najniższej cenie. Jutro, po starcie promocji, informacja musi pokazać 100.
  2. Produkt o stałej cenie. Jeśli nie chcesz czekać do jutra, weź inny produkt o cenie stałej od 40 dni i obniż go od razu. Najniższa cena z 30 dni to stara cena. Cena promocyjna albo brak informacji w tym miejscu to błąd.
  3. Okno przypięte do startu. Po kilku dniach trwania promocji wróć do produktu z kroku 1. Informacja nadal musi pokazywać 100.
  4. Zmiana w ciągu dnia. Na produkcie testowym obniż cenę na godzinę i przywróć ją. Następnie uruchom nową promocję. Najniższa cena musi uwzględnić tę godzinną obniżkę.
  5. Produkt zmienny. Ustaw promocję na jednym wariancie produktu zmiennego. Po wybraniu tego wariantu informacja o najniższej cenie ma się pojawić razem z ceną wariantu. Po wybraniu wariantu bez promocji informacja ma zniknąć.
  6. Waluta. Jeśli sklep używa wtyczki wielowalutowej, przełącz walutę na produkcie w promocji. Najniższa cena musi być w tej samej walucie co cena sprzedaży.
  7. Podatek. Porównaj najniższą cenę z ceną sprzedaży przy ustawieniach, w których sklep wpisuje ceny netto, a wyświetla brutto. Obie liczby muszą zawierać podatek w ten sam sposób.
  8. Strona główna i inne siatki. Wstaw produkt w promocji do bloku Product Collection na stronie głównej, a potem sprawdź produkty powiązane i cross-sell w koszyku. Przy każdej przekreślonej cenie musi stać informacja, i to tylko jedna.
  9. Szablon kreatora. Jeśli karta produktu pochodzi z Elementor Pro albo innego kreatora, sprawdź produkt w promocji na tej karcie.
  10. Koszyk. Dodaj produkt w promocji do koszyka. Informacja ma być zdaniem dla klienta, bez prefiksów technicznych.
  11. Dane strukturalne. Otwórz źródło strony produktu w promocji albo test wyników z elementami rozszerzonymi w Google. Cena w ofercie musi równać się cenie promocyjnej.
  12. Zadanie czyszczące. W WooCommerce otwórz Status, potem Zaplanowane działania, i sprawdź, czy zadanie wtyczki Omnibus jest zaplanowane. Po jego uruchomieniu powtórz krok 2: wpis sprzed okna musi przetrwać.
  13. Ustawienia. Sprawdź, czy okno ma 30 dni i czy żadna opcja nie każe pokazywać bieżącej ceny jako najniższej.

Wynik testu zapisz z datą i zrzutami ekranu. Jeśli sklep zmieni motyw, kreator albo wtyczkę cen, powtórz test, bo każda z tych zmian może przenieść cenę w miejsce, którego wtyczka nie obsługuje.

#Co zrobić, gdy test wykaże błąd

Jeśli błąd jest w ustawieniach (okno krótsze niż 30 dni, opcja pokazująca cenę bieżącą), poprawisz go sam w panelu wtyczki. Jeśli dotyczy wyświetlania (brak informacji w siatce bloku, w szablonie kreatora albo w koszyku), zwykle wystarczy aktualizacja wtyczki albo niewielka zmiana w motywie. Jeśli dotyczy samej historii (promocje zapisane przed startem, brak ceny sprzed okna, pominięta waluta), poprawka wymaga zmian w logice zapisu, a często też oczyszczenia historii zebranej błędnie.

Błędna historia nie naprawi się sama po aktualizacji wtyczki. Wpisy promocji zapisanych przed startem zostają w bazie i dalej obniżają minimum, dopóki ktoś ich nie usunie albo nie wypadną poza okno. Po każdej poprawce logiki przejrzyj historię produktów, które w ostatnich 30 dniach miały zaplanowane promocje.

Podobną zasadę stosujemy przy innych obowiązkach konsumenckich w sklepie, na przykład przy przycisku odstąpienia od umowy: przepis opisuje wynik, a sklep musi go zbudować z danych, których WooCommerce sam nie zbiera. Przegląd innych wtyczek do sklepu znajdziesz w zestawieniu wtyczek WooCommerce.

Jeśli chcesz, żebyśmy sprawdzili historię cen w twoim sklepie, przenieśli ją z innej wtyczki albo zbudowali obsługę Omnibusa dla motywu blokowego, kreatora lub cen dla grup klientów, napisz przez stronę programista WooCommerce. Zaczynamy od testu z tego artykułu na kopii twojego sklepu, a zakres prac ustalamy po jego wyniku.

Ostatnia aktualizacja: 27 października 2026 r.

Następny krok

Przekuj artykuł w realne wdrożenie

Pod tym wpisem dokładam linki, które domykają intencję użytkownika i prowadzą dalej w strukturze serwisu.

Powiązany klaster

Sprawdź inne usługi WordPress i bazę wiedzy

Wzmocnij swój biznes dzięki profesjonalnemu wsparciu technicznemu w kluczowych obszarach ekosystemu WordPress.

Często zadawane pytania

Najważniejsze odpowiedzi, które pomagają wdrożyć temat w praktyce.

Czy WooCommerce sam pokazuje najniższą cenę z 30 dni#
Nie. WooCommerce przechowuje tylko bieżącą cenę regularną, cenę promocyjną i daty zaplanowanej promocji. Nie zapisuje, jaka cena obowiązywała wcześniej, więc najniższej ceny z 30 dni nie ma z czego policzyć. Potrzebujesz wtyczki albo własnego kodu, który od dnia instalacji zapisuje historię zmian ceny.
Od kiedy liczyć 30 dni przy promocji zaplanowanej na przyszłość#
Od dnia, w którym obniżka zaczyna obowiązywać. Art. 4 ust. 2 mówi o 30 dniach przed wprowadzeniem obniżki. Data zapisu produktu w panelu nie ma znaczenia. Promocja zaplanowana na przyszły tydzień nie może trafić do historii w chwili zapisu, bo stałaby się najniższą ceną, zanim ktokolwiek mógł po niej kupić.
Co pokazać, jeśli produkt jest w sprzedaży krócej niż 30 dni#
Art. 4 ust. 3 każe wtedy pokazać najniższą cenę od dnia rozpoczęcia oferowania towaru do dnia wprowadzenia obniżki. Historia cen musi więc znać datę pierwszego wystawienia produktu albo przynajmniej pierwszy wpis ceny.
Czy obowiązek dotyczy też usług i reklam#
Tak. Art. 4 ust. 2 mówi o obniżce ceny towaru lub usługi, a ust. 5 każe stosować te same reguły do reklamy towaru lub usługi wraz z ceną. Sklep sprzedający usługi albo bony na usługi przez WooCommerce podlega tej samej zasadzie.

Potrzebujesz FAQ dopasowanego do branży i rynku? Przygotujemy wersję pod Twoje cele biznesowe.

Porozmawiajmy

Polecane artykuły