Poradniki

Dyrektywa Omnibus w WooCommerce: najniższa cena z 30 dni

Autor: Mariusz Szatkowski · Zaktualizowano: 2026-06-25

Jeśli Twój sklep na WooCommerce prowadzi wyprzedaże, błyskawiczne rabaty lub promocje sezonowe dla klientów w UE, dyrektywa Omnibus zmienia sposób, w jaki masz prezentować te obniżki. Zasada, którą właściciele sklepów odczuwają na co dzień, jest wąska i konkretna: gdy ogłaszasz obniżkę, musisz pokazać także najniższą cenę, jaką produkt miał w niedawnej przeszłości, tak aby oszczędność była mierzona względem realnej, a nie zawyżonej liczby. Trudność nie polega na zrozumieniu samej reguły. Polega na tym, by tę cenę odniesienia wyliczać wiarygodnie, dla każdego produktu, za każdym razem gdy rusza promocja, bez ręcznego prowadzenia arkusza z historią cen. Ten poradnik wyjaśnia, czego wymaga dyrektywa, co powinno robić dobre rozwiązanie i jak moduł Omnibus we wtyczce Polski dla WooCommerce automatycznie zapisuje oraz wyświetla cenę odniesienia.

Czego wymaga dyrektywa Omnibus w prostych słowach

Unijna dyrektywa Omnibus zaostrzyła przepisy o ochronie konsumentów w całej Wspólnocie, a część, z którą styka się większość sklepów, dotyczy obniżek cen.

Główna zasada jest prosta do opisania. Za każdym razem, gdy ogłaszasz obniżkę ceny (wyprzedaż, komunikat “było/jest” czy procent rabatu), musisz pokazać również najniższą cenę, jaką stosowałeś dla tego produktu w okresie 30 dni przed wprowadzeniem obniżki. Ta wcześniejsza najniższa cena staje się punktem odniesienia, względem którego mierzona jest oszczędność.

Zamiast więc porównywać cenę promocyjną z tą, która akurat obowiązywała wczoraj, albo z zawyżoną “ceną regularną”, konsument widzi rzeczywistą, najniższą niedawną cenę. To ukróca praktykę cichego podnoszenia ceny, a następnie “obniżania” jej z powrotem, tak by wyglądała jak okazja.

Uwaga: Ceną odniesienia jest najniższa cena, jaką stosowałeś dla tego produktu w okresie 30 dni przed wprowadzeniem obniżki, dzięki czemu oszczędność jest mierzona względem rzeczywistego niedawnego minimum, a nie zawyżonej “ceny regularnej”.

Kogo dotyczą te przepisy

Dyrektywa obejmuje przedsiębiorców sprzedających konsumentom w UE, a zakres jest szeroki:

  • Polskie sklepy internetowe sprzedające na rynku krajowym.
  • Sklepy w dowolnym kraju UE prowadzące promocje cenowe.
  • Firmy spoza UE sprzedające konsumentom w UE.

Nie ma znaczenia, czy Twój sklep jest duży, czy mały. Jeśli reklamujesz obniżkę ceny wobec kupujących z UE, obowiązek podania ceny odniesienia co do zasady Cię dotyczy. Państwa członkowskie wdrożyły dyrektywę do prawa krajowego (w Polsce poprzez przepisy o ochronie konsumentów), więc dokładne brzmienie i egzekwowanie leżą na poziomie krajowym, choć leżący u podstaw wymóg jest wspólny dla całej UE.

Dlaczego trudno zrobić to ręcznie

Obowiązek brzmi jak zadanie na jedną linijkę, ale ma niewygodny kształt dla właściciela sklepu. Cena odniesienia nie jest stałą cechą produktu. To najniższa wartość, jaką produkt miał w przesuwnym oknie czasowym kończącym się w chwili rozpoczęcia promocji, a okno to jest inne dla każdego produktu, zależnie od tego, kiedy ostatnio zmieniała się jego cena.

Aby wyliczyć ją ręcznie, musiałbyś rejestrować każdą zmianę ceny, z datą, dla każdego produktu i każdego wariantu, a potem na początku każdej promocji przeglądać ostatnie 30 dni i wyłuskiwać najniższą wartość. Przy katalogu jakiejkolwiek wielkości, prowadzony w gorącym okresie wyprzedaży, jest to nierealne. Jest też zawodny: jedna pominięta zmiana ceny sprawia, że cena odniesienia jest błędna, a błędna cena odniesienia jest gorsza niż żadna, bo aktywnie zafałszowuje wielkość oszczędności.

Dlatego praktyczna odpowiedź to ciągłe rejestrowanie historii cen i wyliczanie ceny odniesienia na żądanie, zamiast prób rekonstruowania jej po fakcie.

Czego potrzebuje dobre rozwiązanie Omnibus

Narzędzie obsługujące obowiązek najniższej ceny w WooCommerce powinno spełniać kilka podstaw. Potraktuj to jako listę kontrolną, niezależnie od tego, czy budujesz, kupujesz, czy instalujesz gotowe rozwiązanie:

  • Automatyczna historia cen. Rejestruje cenę każdego produktu w miarę jej zmian, tak aby 30-dniowe okno opierało się na rzeczywistych danych, a nie na domysłach.
  • Uwzględnianie wariantów. Produkty z wariantami mają cenę dla każdego wariantu, więc historię trzeba prowadzić również na poziomie wariantu, nie tylko produktu nadrzędnego.
  • Poprawne okno przesuwne. Odczytuje najniższą cenę z prawnie istotnego okresu, a jego długość jest konfigurowalna, a nie zaszyta na sztywno.
  • Czytelne wyświetlanie obok oferty. Cena odniesienia pojawia się tam, gdzie ogłaszana jest obniżka, w sformułowaniu zrozumiałym dla kupującego.
  • Obecność na wszystkich powierzchniach. Nowoczesne sklepy pokazują ceny na karcie produktu, w archiwach, w koszyku i przy finalizacji oraz w danych strukturalnych, więc cena odniesienia powinna docierać do wszystkich tych miejsc.
  • Sensowne ustawienia domyślne. Powinno działać poprawnie od razu po włączeniu, tak aby sklep, który po prostu je uruchamia, prezentował właściwą liczbę.

Zwróć uwagę, czego na tej liście nie ma: gwarancji zgodności z prawem. Wtyczka może dokładnie wyliczyć i wyświetlić cenę odniesienia, ale to, czy cała Twoja promocja spełnia obowiązujące Cię przepisy, pozostaje Twoją decyzją.

Ostrzeżenie: Żadna wtyczka nie gwarantuje zgodności. Moduł dokładnie zapisuje i wyświetla cenę odniesienia, ale potwierdzenie, że Twój sklep spełnia obowiązujące go przepisy, pozostaje Twoją odpowiedzialnością jako właściciela.

Jak radzi sobie z tym moduł Omnibus we wtyczce Polski

Polski dla WooCommerce to bezpłatna, modułowa wtyczka dla polskich i unijnych sklepów, a jej moduł Omnibus został zbudowany wokół dokładnie tego problemu. Wykonuje dwa zadania: w tle rejestruje historię cen i wyświetla najniższą cenę z 30 dni wszędzie tam, gdzie pojawia się oferta.

Najniższa cena z 30 dni pokazana obok ceny promocyjnej na karcie produktu Polski pokazuje najniższą cenę z ostatnich 30 dni obok ceny promocyjnej, dokładnie tam, gdzie ogłaszana jest obniżka.

Jak rejestruje historię cen

Moduł podpina się pod własne zdarzenia zapisu WooCommerce. Za każdym razem, gdy produkt jest tworzony lub aktualizowany, albo zapisywany jest wariant, zapisuje migawkę ceny, obejmującą cenę regularną, cenę promocyjną (jeśli jest ustawiona) oraz walutę, do własnej tabeli polski_price_history. Warianty są rejestrowane osobno, więc produkty z wariantami zachowują dokładną historię dla każdego wariantu, zamiast jednej zatartej liczby dla produktu nadrzędnego.

Uwaga: Historia jest zapisywana na podstawie zdarzeń zapisu WooCommerce, więc migawka powstaje, gdy zapisujesz produkt lub wariant. Ceny zmienione poza tym przepływem, na przykład przez bezpośredni import do bazy danych, mogą nie zostać zarejestrowane.

Dwie decyzje projektowe utrzymują w tym porządek. Zapis następuje najwyżej raz dziennie dla danego produktu, więc wielokrotne zapisywanie tego samego produktu nie zalewa tabeli zduplikowanymi wierszami. A codzienne zadanie konserwacyjne usuwa stare rekordy, gdy wypadną poza okres przechowywania, dzięki czemu tabela historii pozostaje roboczym zbiorem danych, a nie rośnie bez ograniczeń.

Jak wyświetla cenę odniesienia

Gdy produkt jest objęty promocją, moduł odczytuje najniższą efektywną cenę zarejestrowaną w ciągu ostatnich 30 dni i prezentuje ją obok ceny. Długość okna jest konfigurowalna i domyślnie wynosi 30 dni. Gdyby zapisana wartość była kiedyś pusta lub zerowa, moduł wraca do 30 dni, zamiast zwijać okno do ceny bieżącej, więc błędna konfiguracja nie sprawi przypadkiem, że cena odniesienia straci sens.

Wyświetlane sformułowanie to szablon, który kontrolujesz. Domyślnie brzmi mniej więcej “Najniższa cena z ostatnich 30 dni: {cena}”, z miejscami na liczbę dni i sformatowaną kwotę, więc możesz dostosować frazę do tego, jak rozmawiasz z klientami. Domyślnie komunikat pojawia się tylko na produktach objętych promocją, czyli dokładnie wtedy, gdy obowiązek ma zastosowanie, choć to zachowanie jest ustawieniem.

Cena odniesienia nie ogranicza się do samej karty produktu. Ponieważ Polski obsługuje blokowy koszyk i finalizację zamówienia, podobnie jak klasyczne szablony, najniższa cena z 30 dni pojawia się także w blokowym koszyku i przy finalizacji. Jest również umieszczana w danych strukturalnych JSON-LD produktu, gdy produkt jest na promocji, dzięki czemu prawdziwa najniższa cena podróżuje razem ze znacznikami odczytywanymi maszynowo, a nie tylko na widocznej stronie. Dla motywów blokowych dedykowany blok Najniższa cena (Omnibus) pozwala umieścić komunikat w edytorze, a do stron produktu budowanych w Elementorze służy odpowiadający mu widget Elementora.

Pod maską wynik zapytania jest buforowany dla każdego produktu w pamięci podręcznej obiektów WordPressa, a na stronach archiwów moduł rozgrzewa pamięć podręczną dla całej pętli produktów jednym zapytaniem, więc pokazanie ceny odniesienia na całej stronie kategorii nie zamienia się w jedno zapytanie do bazy na każdy produkt.

Opcjonalny wykres historii cen

Obok komunikatu z ceną odniesienia Polski zawiera osobny moduł wykresu historii cen. Renderuje on na karcie produktu mały, osadzony wykres SVG (sparkline) z tej samej zarejestrowanej historii, pokazujący trend ceny w konfigurowalnym oknie z oznaczonym punktem najniższym i najwyższym. Jest rysowany jako zwykły SVG, bez zewnętrznej biblioteki JavaScript, i pojawia się dopiero, gdy istnieją co najmniej dwie różne zarejestrowane ceny. To dodatek na rzecz przejrzystości, a nie ścisły wymóg dyrektywy, przydatny dla sklepów, które chcą pokazać kupującym uczciwy obraz tego, jak zmieniała się cena.

Konfiguracja krok po kroku

Uruchomienie ceny odniesienia zajmuje kilka minut:

  1. Zainstaluj Polski dla WooCommerce z Wtyczki, Dodaj nową (wyszukaj “Polski for WooCommerce”), a następnie aktywuj. WooCommerce musi być zainstalowane i aktywne.
  2. Otwórz menu Polski i przejdź do Moduły, po czym włącz moduł Omnibus.
  3. W ustawieniach modułu potwierdź okno (domyślnie 30 dni) i dostosuj tekst komunikatu, jeśli chcesz innego sformułowania. Pozostaw włączoną opcję “wyświetlaj tylko podczas promocji”, o ile nie masz powodu, by to zmienić.
  4. Opcjonalnie włącz moduł wykresu historii cen, jeśli chcesz mieć sparkline na kartach produktów.

Od tego momentu moduł zapisuje migawkę ceny przy każdym zapisie produktu, a każdy produkt, który obejmiesz promocją, automatycznie pokazuje swoją najniższą cenę z 30 dni. Nie ma konfiguracji per produkt: historia buduje się sama w trakcie pracy, a im dłużej moduł działa przed wyprzedażą, tym pełniejsze będzie 30-dniowe okno stojące za tą wyprzedażą.

Wskazówka: Włącz moduł na długo przed kolejną dużą wyprzedażą. Może raportować tylko tę historię cen, którą już zarejestrował, więc im wcześniej działa, tym pełniejsze będzie 30-dniowe okno stojące za tą wyprzedażą.

Praktyczne wskazówki

Narzędzie daje Ci mechanizm, a kilka nawyków sprawia, że efekt jest solidny:

  • Włącz wcześnie. Moduł może raportować tylko tę historię cen, którą sam zarejestrował. Włączenie go odpowiednio przed kolejną dużą wyprzedażą sprawia, że 30-dniowe okno za nią opiera się na rzeczywistych migawkach, a nie na krótkiej, ubogiej historii.
  • Uważaj na masowe edycje cen. Jeśli zmieniasz ceny poza normalnym przepływem zapisu produktu, na przykład bezpośrednim importem do bazy danych, takie zmiany mogą nie wygenerować migawki. To zapis przez WooCommerce rejestruje historię.
  • Stosuj jednoznaczne sformułowania. Komunikat w formie “najniższa cena z ostatnich 30 dni” nie zostawia kupującemu miejsca, by pomylił go z ceną bieżącą lub pierwotną.
  • Pamiętaj o obniżkach progresywnych. Gdy rabat pogłębia się etapami, a cena nie wraca w międzyczasie do normalnego poziomu, wytyczne krajowe często utrzymują cenę odniesienia na poziomie najniższej wartości sprzed rozpoczęcia akcji, zamiast resetować ją na każdym etapie. Potraktuj wyświetlaną liczbę jako punkt wyjścia i zweryfikuj lokalną interpretację dla promocji etapowych.
  • Nie traktuj tego jako prawnego placetu. Moduł prezentuje cenę odniesienia poprawnie, ale Twój regulamin, mechanika promocji i pozostałe obowiązki nadal wymagają własnej weryfikacji.

Moduł Omnibus we wtyczce Polski a domyślne WooCommerce

WooCommerce potrafi objąć produkt promocją i pokazać przekreśloną cenę “było/jest”, ale nie prowadzi żadnej historii tego, ile cena wynosiła w czasie, więc nie ma czego wyświetlić jako najniższej ceny z 30 dni. Oto różnica konkretnie dla obowiązku Omnibus:

FunkcjaDomyślne WooCommerceModuł Omnibus we wtyczce Polski
Rejestrowanie historii cenBrakMigawka przy każdym zapisie produktu lub wariantu, raz dziennie
Historia na poziomie wariantuBrakTak, dla każdego wariantu
Najniższa cena odniesienia z 30 dniNiedostępnaWyliczana z zarejestrowanej historii, okno konfigurowalne
Wyświetlanie obok ofertyTylko przekreślona cenaKomunikat z ceną odniesienia, konfigurowalne sformułowanie
Blokowy koszyk i finalizacjaTylko standardowa cenaCena odniesienia pokazywana w blokowym koszyku i przy finalizacji
Dane strukturalneStandardowa cena ofertyNajniższa cena z 30 dni dodana do JSON-LD podczas promocji
Wykres historii cenBrakOpcjonalny osadzony sparkline SVG
Usuwanie starych rekordówNie dotyczyCodzienne czyszczenie migawek spoza okna
KosztBezpłatne (bez ceny odniesienia)Bezpłatne i otwartoźródłowe

Bezpłatne i otwartoźródłowe

Nie ma tu osobnej, płatnej edycji do rozważenia. Polski dla WooCommerce jest bezpłatne i otwartoźródłowe na licencji GPL, a moduł Omnibus, stojące za nim rejestrowanie historii cen oraz opcjonalny wykres historii cen są częścią tej darmowej wtyczki. Wtyczka jest modułowa, więc możesz włączyć tylko elementy związane z Omnibus, a resztę funkcji pozostawić wyłączoną, jeśli potrzebujesz wyłącznie obsługi obowiązku najniższej ceny.

W skrócie

Dyrektywa Omnibus wymaga jednej konkretnej liczby zawsze, gdy ogłaszasz obniżkę: najniższej ceny, jaką produkt miał w ciągu 30 dni przed wyprzedażą. Ta liczba jest naprawdę trudna do wyliczenia ręcznie, bo zależy od przesuwnego okna historii cen, dla każdego produktu i każdego wariantu. Moduł Omnibus we wtyczce Polski automatycznie rejestruje tę historię w miarę zapisywania produktów, a następnie wyświetla najniższą cenę z 30 dni obok oferty, w blokowym koszyku i przy finalizacji oraz w danych strukturalnych, z konfigurowalnym oknem i sformułowaniem oraz sensownymi ustawieniami domyślnymi od razu po instalacji. Jest bezpłatny i otwartoźródłowy, a jak każde narzędzie prezentuje za Ciebie tę liczbę, pozostawiając ostateczną ocenę zgodności, jak zawsze, Tobie.

Polski dla WooCommerce - moduł Omnibus