Omnibus: najniższa cena z 30 dni i trzy miejsca, w których sklepy się mylą

4 min czytania
Podświetlona siatka cyfr od jednego do dziewięciu na ciemnym ekranie

Przy każdej obniżce ceny trzeba podać informację o najniższej cenie tego towaru z ostatnich trzydziestu dni przed wprowadzeniem obniżki. Nie o cenie regularnej, nie o cenie sprzed tygodnia i nie o tej przekreślonej, którą pokazuje motyw.

To rozróżnienie wygląda na drobiazg, dopóki nie zrobisz drugiej promocji w ciągu miesiąca. Wtedy robi się z niego problem.

Przekreślona cena to nie to samo

WooCommerce ma dwa pola: cenę regularną i promocyjną. Przekreślona cena na karcie produktu to po prostu cena regularna - czyli to, ile produkt kosztuje dziś poza promocją. Najniższa cena z 30 dni to zapis historyczny: ile produkt kosztował najmniej w konkretnym oknie czasu.

Te dwie liczby bywają równe i wtedy nikt nie widzi problemu. Rozjeżdżają się w momencie, w którym cena regularna się zmieniła albo była już wcześniej obniżona.

Historię trzeba zapisywać, zanim będzie potrzebna

Najniższej ceny z trzydziestu dni nie da się odtworzyć po fakcie. WooCommerce nie przechowuje historii cen - zmieniasz pole, stara wartość przepada. Jeśli zaczniesz zapisywać ją dopiero w dniu promocji, pierwsze trzydzieści dni będziesz zgadywać.

Zapis warto podpiąć pod moment faktycznej zmiany ceny, a nie pod każdy zapis produktu:

add_action( 'woocommerce_update_product', function ( $product_id, $product ) {
    $poprzednia = get_post_meta( $product_id, '_cena_ostatnio', true );
    $obecna     = $product->get_price();

    // Wiersz dopisujemy tylko przy zmianie. Inaczej każdy zapis produktu -
    // także zmiana opisu czy zdjęcia - dokłada do tabeli kopię tej samej ceny.
    if ( '' !== $obecna && (string) $poprzednia !== (string) $obecna ) {
        tw_zapisz_cene( $product_id, (float) $obecna );
        update_post_meta( $product_id, '_cena_ostatnio', $obecna );
    }
}, 10, 2 );

Warianty mają własne ceny, więc potrzebują własnych wierszy. Produkt zmienny bez historii wariantów pokaże najniższą cenę „od”, która nie odpowiada żadnemu realnie kupowalnemu wariantowi.

Zbliżenie klawiszy kalkulatora: mnożenie, dzielenie i znak równości
Najniższa cena z trzydziestu dni to nie to samo co cena sprzed obniżki.

Pułapka: druga obniżka w trakcie promocji

To jest miejsce, w którym sklepy mylą się najczęściej - i jedyne, w którym pomyłka wygląda jak sprytny zabieg.

Wyobraź sobie taki przebieg:

Kiedy Cena
60 dni temu 79 zł
40 dni temu 69 zł
dziś promocja 49 zł

Poprawna odpowiedź to 69 zł. Cena 79 zł wypadła poza okno trzydziestu dni, więc nie jest już punktem odniesienia.

A teraz ważniejsze: jeśli w trakcie trwającej promocji zejdziesz z 49 zł na 39 zł, punkt odniesienia się nie przesuwa. Nadal jest nim 69 zł. Przyjęcie, że po tygodniu promocji najniższą ceną z 30 dni staje się 49 zł, pozwalałoby schodzić z ceną co tydzień i za każdym razem pokazywać coraz niższą „najniższą cenę” - czyli dokładnie to, czemu przepis miał zapobiec.

Jak to sprawdzić u siebie

Weź jeden produkt, który miał w tym kwartale dwie promocje, i prześledź jego ceny z kalendarzem w ręku. Jeśli liczba na karcie produktu zgadza się z tą, którą wyliczyłeś ręcznie, mechanizm działa. Jeśli pokazuje cenę regularną - nie liczy historii, tylko przepisuje pole.

Gdzie to pokazać

Informacja ma być przy cenie, w miejscu, w którym klient podejmuje decyzję: na karcie produktu i wszędzie tam, gdzie obok ceny promocyjnej stoi przekreślona cena regularna. Jeśli promocje pokazujesz też na listingu kategorii, wiersz powinien być i tam.

Szare, małe i pod ceną to w zupełności wystarczy - chodzi o to, żeby informacja była, a nie żeby krzyczała.

Czego ten wpis nie rozstrzyga

Nie jest to porada prawna. Są sytuacje graniczne - produkty nowe w sklepie krócej niż trzydzieści dni, towary szybko psujące się, programy lojalnościowe i kody rabatowe przypisane do konta - w których odpowiedź zależy od szczegółów, a te warto omówić z prawnikiem swojego sklepu.

Techniczną stronę, czyli tabelę historii cen, liczenie okna i gotowy wiersz pod ceną, mamy spakowane w Komplecie zgodności sklepu. Jeśli wolisz napisać to sam, powyższe trzy akapity o drugiej obniżce są najważniejszą częścią zadania.

Nowa wtyczka? Dowiesz się pierwszy.

Premiery, poradniki i promocje - raz na jakiś czas, bez zasypywania skrzynki.

[ skrót ] Albo zrób to wtyczką
Motyw strony wynajmu domku
v1.0.0 Nowość

Motyw strony wynajmu domku

Strona jednego domku: kalendarz wolnych terminów i cena pobytu bez dzwonienia.

WP
6.4+
799,00 zł jednorazowo
Kup i pobierz
Tryb wakacyjny
v1.0.0 Nowość

Tryb wakacyjny

Urlop bez strat: katalog zostaje w Google, zamówień nie można złożyć, a klient widzi datę powrotu.

Urlop i remanent Bez utraty SEO Harmonogram
WP
6.4+
59,00 zł jednorazowo
Kup i pobierz