Opublikowany, a sklep go nie pokazuje
Opublikowany i na stanie, a nie ma go na stronie sklepu, w kategoriach ani w wyszukiwarce. Na WooCommerce 11.1 i 11.2 produktu prostego nie da się nawet kupić.
Objaw
Kategoria mówi, że ma 16 produktów, a pokazuje 2. Brakujące w panelu wyglądają dobrze: opublikowane, widoczność „Sklep i wyniki wyszukiwania”, na stanie. Nie ma ich na stronie sklepu, w kategorii ani w wynikach wyszukiwania — a otwarte z bezpośredniego adresu mają swoją stronę, z ceną.
Na WooCommerce 11.1 i 11.2 na tej stronie nie ma przycisku Dodaj do koszyka: produktu prostego w takim stanie nie da się kupić wcale, nawet klientowi, który trafi na niego z linku albo z reklamy.
Przyczyną jest pole, którego panel nigdy nie pokazuje: rodzic produktu (post_parent). WordPress
używa go przy stronach i załącznikach, WooCommerce przy wariantach. Produkt prosty w ogóle go nie
używa, ale może go mieć: import CSV wpisuje go z kolumny „Nadrzędny” (w angielskim pliku
„Parent”), a REST API przy tworzeniu produktu przyjmuje dowolny parent_id, nie sprawdzając, czy
taki wpis istnieje — tędy produkty tworzą Zapier i podobne integracje. Gdy rodzic nie istnieje albo
nie jest opublikowany, WooCommerce ukrywa produkt.
Ile to kosztuje
- Produkty, których nikt nie znajdzie. Klienci przeglądają kategorie i szukają. Produkt, którego nie ma w żadnym z tych miejsc, sprzedaje się tylko komuś, kto już ma do niego link.
- Na WooCommerce 11.1 i 11.2 nawet jemu nie. Produktu prostego ukrytego w ten sposób nie da się dodać do koszyka, więc ruch, za który zapłacono — reklama, newsletter — trafia na cenę bez przycisku.
- Nic w panelu na to nie wskazuje. Produkt jest opublikowany, widoczny i na stanie. Edycja niczego nie zmienia, bo zapis produktu wpisuje z powrotem tego samego rodzica. Jedyny ślad to licznik kategorii, który nie zgadza się z listą.
Ile z tego dotyczy Twojego sklepu, zależy od wersji WooCommerce. Wersja 11.1 zaczęła wymagać, żeby rodzic był opublikowany, nawet gdy numer rodzica wskazuje wpis, którego nie ma. Poprawka jest scalona do 11.3: od tej wersji liczy się tylko rodzic, który jest produktem albo wariantem.
| WooCommerce | Rodzica nie ma albo nie jest produktem | Rodzic to nieopublikowany produkt |
|---|---|---|
| do 11.0 | bez skutku | znika z list, da się go kupić z adresu |
| 11.1 i 11.2 | znika z list, nie da się go kupić | znika z list, nie da się go kupić |
| od 11.3 | bez skutku | znika z list, nie da się go kupić |
„Nie da się go kupić” dotyczy produktów prostych. Produkt wariantowy ukryty w ten sposób w naszych testach dalej sprzedawał warianty ze swojej strony.
Jak to sprawdzić samodzielnie
Bez dostępu do bazy — przez publiczne Store API sklepu. Otwórz ten adres z domeną swojego sklepu:
https://example.com/wp-json/wc/store/v1/products?per_page=100
Dopisz &category=ID, żeby zobaczyć jedną kategorię, &page=2 po następną setkę. Na WooCommerce
11.1 lista dalej zawiera produkty, które strona sklepu pomija, a każdy ma pole "parent". Produkt
prosty powinien mieć "parent": 0 — każda inna liczba przy produkcie, którego brakuje w kategorii,
to ten problem.
Z bazy — zapytanie wypisuje opublikowane produkty, których rodzic nie istnieje albo nie jest opublikowany:
wp db query "SELECT p.ID, p.post_title, p.post_parent,
r.post_type AS parent_type, r.post_status AS parent_status
FROM wp_posts p
LEFT JOIN wp_posts r ON r.ID = p.post_parent
WHERE p.post_type = 'product' AND p.post_status = 'publish'
AND p.post_parent <> 0
AND (r.ID IS NULL OR r.post_status <> 'publish')"
NULL w parent_type znaczy, że rodzica nie ma. Wynik czytaj z tabelą wyżej: na WooCommerce 11.0
i starszym oraz od 11.3 rodzic, którego nie ma albo który nie jest produktem, niczego nie ukrywa,
więc na tych wersjach taki wiersz nie jest problemem. Wariantów zapytanie nie wypisuje — dla nich
rodzic jest czymś normalnym.
Z panelu — porównaj licznik w Produkty → Kategorie z liczbą produktów na stronie kategorii, potem otwórz brakujący produkt z jego adresu. Na 11.1 i 11.2 produkt prosty pokazuje cenę bez przycisku Dodaj do koszyka.
Jak to naprawić
-
Usuń rodzica: produkt potrzebuje
post_parentrównego 0. Edytor produktu nie ma takiego pola, a zapis produktu wpisuje z powrotem tego samego rodzica. -
Pojedynczo, przez WP-CLI:
wp post update ID --post_parent=0, gdzie ID to numer produktu. -
Wiele produktów naraz: najpierw zrób kopię bazy, potem uruchom to zapytanie w phpMyAdmin albo w narzędziu do bazy danych u hostingodawcy. Zeruje rodzica każdego produktu, którego rodzic nie istnieje albo nie jest opublikowany; jeśli nazwy Twoich tabel nie zaczynają się od
wp_, zmień przedrostek.UPDATE wp_posts p LEFT JOIN wp_posts r ON r.ID = p.post_parent SET p.post_parent = 0 WHERE p.post_type = 'product' AND p.post_parent <> 0 AND (r.ID IS NULL OR r.post_status <> 'publish'); -
Jeśli rodzic to jeden z Twoich produktów, tylko nieopublikowany, jego publikacja też przywróci ukryte produkty — najpierw sprawdź, czy powinien być w sklepie.
-
Potem znajdź, co wpisało rodzica: import CSV z wypełnioną kolumną „Nadrzędny” („Parent”) albo narzędzie, które tworzy produkty przez REST API (Zapier, integracja) i wysyła
parent_id. Inaczej następny import przywróci problem.
Rodzic, który nie istnieje, przestaje ukrywać produkty od WooCommerce 11.3. Nie czekaj na to: do aktualizacji te produkty się nie sprzedają, a rodzic, który jest nieopublikowanym produktem, ukrywa je w każdej wersji.
Kiedy to fałszywy alarm
Praktycznie nigdy. WooCommerce ukrywa produkt przed klientami niezależnie od Twoich zamiarów. Jeśli i tak nie chcesz go w sklepie, ustaw go jako szkic, żeby nie liczył się jako opublikowany.
Co trzyma tę kontrolę w ryzach tam, gdzie ma milczeć: rodzic, który w Twojej wersji WooCommerce niczego nie robi, nie jest znaleziskiem. Do 11.0 rodzic, którego nie ma, niczego nie ukrywa, a od 11.3 nie ukrywa też rodzic, który nie jest produktem — zapytanie wyżej takie produkty wypisze, Merchlint nie. Warianty pomijamy, bo dla nich rodzic jest czymś normalnym.
Jak znajduje to Merchlint
Merchlint bierze każdy opublikowany produkt, który ma rodzica — jednym zapytaniem w całym katalogu, z dołączonym rodzicem — a rozstrzygnięcie zostawia WooCommerce. Od wersji 11.1 pyta WooCommerce, czy produkt jest publicznie widoczny — tego sprawdzenia WooCommerce używa przy listach produktów i przy koszyku — bez Twoich uprawnień administratora, więc odpowiedź jest taka, jaką dostaje klient, choć audyt działa z konta administratora. Od 11.3 to sprawdzenie pomija rodzica, który nie jest produktem, a ta reguła idzie za nim. Przed 11.1 Merchlint stosuje zasadę tamtych wersji: produkt jest ukryty tylko wtedy, gdy jego rodzic jest produktem albo wariantem i nie jest opublikowany.
Znalezisko pokazuje ID rodzica, co jest z rodzicem nie tak — nie istnieje albo nie jest opublikowany — a gdy rodzic istnieje, także jego typ i status publikacji słowami WordPressa. Na końcu to, co dostaje klient: produkt ukryty na stronie sklepu, w kategoriach i w wyszukiwarce, a przy produkcie prostym na WooCommerce 11.1 i nowszym także „nie da się go kupić”.
Pewność: F — fakt z bazy, a rozstrzyga sam WooCommerce.
Nowa w wersji 0.3.7. Status i widoczność w katalogu, które czyta Sprzedają się, ale są ukryte z katalogu, są przy tych produktach w porządku — tamta kontrola ich nie widzi.
Ta kontrola działa w wersji darmowej, na każdym produkcie, bez limitu.
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.