Nie ma przycisku „Dodaj do koszyka”? Sprawdź cenę
Produkt bez ceny nie ma przycisku „Dodaj do koszyka”, a z ceną 0,00 ma go i on działa. Jedno i drugie bywa przypadkiem — albo celowym gratisem czy bonem.
Objaw
Dwa różne stany, oba biorące się z tego samego pola — zwykle przez przypadek, czasem celowo.
Brak ceny w ogóle. Karta produktu się ładuje, zdjęcie jest, opis jest, a w miejscu ceny
i przycisku „dodaj do koszyka” nie ma nic. WooCommerce ukrywa przycisk, gdy _price jest puste —
po cichu, bo z jego punktu widzenia produkt bez ceny nie jest kupowalny i to jest poprawny stan.
Cena zero. Przycisk jest, działa, a zamówienie przechodzi na 0,00. Zwykle po imporcie, w którym kolumna z ceną była pusta, albo po masowej edycji, która trafiła w nie to pole.
Cena jest, a przycisku dalej nie ma? To już nie ta kontrola. Na liście w sklepie produkt, którego nie ma w magazynie, dostaje Dowiedz się więcej zamiast Dodaj do koszyka; produkt zmienny dostaje Wybierz opcje, a wariant bez ceny ma osobną kontrolę: A6. Przycisk potrafi też zdjąć wtyczka trybu katalogu albo „zapytaj o cenę” i sam motyw.
Ile to kosztuje
Przypadek bez ceny kosztuje Cię każde wejście, które ten produkt zbiera. Rankuje, siedzi w kategoriach, jedzie w feedach — i konwertuje dokładnie na zero, bo nie ma jak go kupić. To jest najczystsza postać zmarnowanego ruchu, jaka istnieje w katalogu.
Przypadek z ceną zero jest gorszy, bo kończy się powodzeniem. Towar wyjeżdża, przesyłka jest opłacona, opakowanie zużyte, a wartość zamówienia wynosi zero. W sklepie z progiem darmowej wysyłki potrafi też pociągnąć za sobą inne pozycje.
Jedno i drugie zwykle przychodzi partiami. Pojedynczy produkt bez ceny, dodany ręcznie, zdarza się rzadko; dwieście sztuk oznacza, że import zmapował złą kolumnę — i naprawa należy do importu, a nie do produktów.
Jak to sprawdzić samodzielnie
Opublikowane, bez ceny:
wp db query "SELECT p.ID, p.post_title
FROM wp_posts p
LEFT JOIN wp_postmeta pr ON pr.post_id = p.ID AND pr.meta_key = '_price'
WHERE p.post_type = 'product' AND p.post_status = 'publish'
AND (pr.meta_value IS NULL OR pr.meta_value = '')"
Opublikowane z ceną zero:
wp db query "SELECT p.ID, p.post_title
FROM wp_posts p
JOIN wp_postmeta pr ON pr.post_id = p.ID AND pr.meta_key = '_price'
WHERE p.post_type = 'product' AND p.post_status = 'publish'
AND pr.meta_value + 0 = 0 AND pr.meta_value <> ''"
Jedna pułapka warta zapamiętania: w produkcie wariantowym _price trzyma najniższą cenę spośród
wariantów. Wariantowy produkt nadrzędny z pustym _price zwykle oznacza, że żaden z jego
wariantów też nie ma ceny — a to inny i większy problem niż zwykły produkt z pustym polem.
Jak naprawić
- Sprawdź, czy to celowe. Gratis dodawany do zamówień, bon, darowizna, „cena na zapytanie” — wtedy nie ma czego naprawiać. Ukryj znalezisko, zostanie ukryte.
- Szukaj partii, nie produktu. Posortuj wyniki po dacie utworzenia. Jeśli się skupiają, patrzysz na jeden przebieg importu i to mapowanie wymaga poprawki.
- Uzupełnij ceny, a jeśli produkt naprawdę jeszcze ceny nie ma — wyjmij go z katalogu na czas oczekiwania: szkic albo ukrycie z katalogu. „Opublikowany i niekupowalny” to jedyny stan, który nie pomaga nikomu.
- Przy produktach z ceną zero, które się sprzedały, sprawdź zamówienia, zanim cokolwiek zmienisz. Możesz chcieć wiedzieć, kto co dostał.
- Przy katalogach „cena na zapytanie” użyj wtyczki zrobionej do tego, a nie pustego pola ceny. Puste pole renderuje się jako cisza; porządny formularz zapytania renderuje się jako następny krok.
Kiedy to fałszywy alarm
- Produkty darmowe z założenia — gratis dodawany do zamówień powyżej kwoty, próbki, darmowe pliki, materiał na zapis do listy, darowizna z własną kwotą. Zero jest poprawną ceną. Ukryj znalezisko, zostanie ukryte. Z danych nie da się odróżnić gratisu od pomyłki — gratis, który jedzie z każdym zamówieniem, i produkt wyzerowany importem wyglądają tak samo — więc ta decyzja zostaje przy Tobie.
- Karty podarunkowe i produkty, których nie ma w magazynie — od wersji 0.3.5 Merchlint je pomija. W karcie podarunkowej kwotę wybiera klient, a produkt bez stanu jest zwykle wycofany.
- Katalogi B2B z cenami za logowaniem. Cena istnieje, tylko nie jest zapisana w
_pricedla niezalogowanych. Jeśli używasz cen per rola, ta kontrola nie mierzy właściwego pola. - Produkty w trakcie pisania, trzymane jako opublikowane, bo komuś tak wygodniej. To wybór dopuszczalny — warto tylko, żeby był świadomy.
Jak znajduje to Merchlint
Merchlint czyta cenę przez WooCommerce — nie z tabeli pomocniczej, którą nieudany import potrafi pominąć — razem ze statusem produktu, stanem magazynowym i typem, i zgłasza opublikowany produkt z ceną pustą albo zerową. Od wersji 0.3.5 pomija produkty, których nie ma w magazynie, i karty podarunkowe, a dowód nazywa stan: brak ceny (nie da się go dodać do koszyka) albo cena 0 (każdy zamówi go za darmo). Są nazwane osobno, bo naprawa jest inna i pilność jest inna.
Pewność: F — fakt z bazy. Zapisane pole jest puste albo wynosi zero. Bez progu, bez interpretacji. Czy zero to pomyłka, czy gratis — tego jednego dane nie mówią.
Przy znalezisku widać odczytaną wartość, typ produktu i status publikacji.
Coś się nie zgadza z tym, co widzisz w sklepie? Napisz — czytamy każdą wiadomość. contact@merchlint.com
Masz wynik z wtyczki i nie wiesz, od czego zacząć? Do 15 listopada 2026 przeglądamy eksporty z dziesięciu sklepów — darmowy audyt katalogu.