Schema.org dla WooCommerce: jak wdrożyć dane strukturalne, żeby Google pokazywał gwiazdki i ceny
Schema.org WooCommerce dane strukturalne to kod JSON-LD, który pozwala Google wyświetlać gwiazdki, ceny i dostępność produktów bezpośrednio w wynikach wyszukiwania. Rank Math automatyzuje większość pracy, ale wdrożenie wymaga kilku konkretnych ustawień i walidacji.
Widziałem to dziesiątki razy: sklep WooCommerce z setkami produktów, poprawna struktura kategorii, zdjęcia w dobrej rozdzielczości, a w Google wyniki wyglądają jak zwykłe niebieskie linki. Żadnych gwiazdek, żadnej ceny, żadnej informacji o dostępności. Konkurent, który wdrożył schema.org trzy miesiące temu, zbiera te kliknięcia.
Dane strukturalne to jeden z tych tematów, które brzmią technicznie, a w praktyce można je uruchomić w godzinę. Piszę ten tekst dla właścicieli sklepów WooCommerce i ich deweloperów, którzy chcą konkretnie wiedzieć: które typy schema są potrzebne, jak je wdrożyć, jak sprawdzić czy działają i co robić, kiedy coś nie gra.
Czym w ogóle jest schema.org dla sklepu
Schema.org to słownik znaczników, który mówi wyszukiwarkom, co oznaczają dane na Twojej stronie. Zamiast żeby Google zgadywał, czy liczba "4.7" to ocena produktu, recenzja hotelu czy wynik meczu, dostajesz narzędzie do jednoznacznego oznaczenia: to jest Product, ma AggregateRating wynoszące 4.7 z 83 recenzji, cena to 239 PLN, dostępność to InStock.
Format implementacji w 2026 to JSON-LD: blok kodu JavaScript w tagu <script type="application/ld+json"> wstawiany w sekcji <head> strony. Google preferuje JSON-LD nad starsze formaty (microdata, RDFa), bo jest łatwiejszy w utrzymaniu i nie wymaga przeplatania kodu HTML ze znacznikami.
Google nie gwarantuje wyświetlenia rich snippets nawet przy poprawnym schemacie. Dane strukturalne to kwalifikacja, nie gwarancja. W praktyce sklepy z pełnym, poprawnym schematem wyświetlają gwiazdki w 60-75% przypadków po 4-8 tygodniach od indeksowania.
Cztery typy schema, które musi mieć sklep WooCommerce
Nie wszystkie typy schema są tak samo ważne dla e-commerce. Po wdrożeniu kilkudziesięciu sklepów WooCommerce wiem, że do wyświetlania bogatych wyników produktowych potrzebujesz dokładnie czterech typów, reszta to dodatki.
Product to fundament. Zawiera nazwę, opis, SKU, markę, zdjęcia produktu. Bez niego nic innego nie zadziała. WooCommerce domyślnie generuje podstawowy Product schema, ale bez Offer, co dyskwalifikuje go z większości rich snippets.
Offer (zagnieżdżony w Product) to cena, waluta, data ważności ceny i dostępność. Google wymaga tego bloku, żeby w ogóle rozważyć wyświetlenie ceny w wynikach. Kluczowe pola: price, priceCurrency ("PLN"), availability (schema.org/InStock lub schema.org/OutOfStock), url.
AggregateRating to zagregowana ocena produktu: średnia wartość i liczba recenzji. Pojawia się jako gwiazdki obok tytułu w wynikach Google. Wymaga pól ratingValue (liczba zmiennoprzecinkowa) i reviewCount (liczba całkowita). Nie wstawiaj AggregateRating, jeśli produkt nie ma żadnych recenzji, bo Google to odrzuci.
BreadcrumbList pojawia się jako ścieżka nawigacji (Dom > Zabawki > Drewniane > Produkt) zamiast surowego URL w wynikach wyszukiwania. Poprawia CTR, bo użytkownik widzi kontekst produktu. Rank Math generuje go automatycznie na każdej stronie produktu.
Jak wygląda poprawny JSON-LD dla produktu WooCommerce
Zanim przejdę do wtyczek, pokażę jak wygląda docelowy markup. Wiedząc co ma być na wyjściu, łatwiej ocenisz, czy Twoja konfiguracja to generuje.
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Drewniany domek dla lalek Maja",
"sku": "DL-MAJA-001",
"brand": {
"@type": "Brand",
"name": "ZulaKids"
},
"description": "Ręcznie malowany drewniany domek dla lalek...",
"image": [
"https://example.com/domek-maja-front.jpg"
],
"offers": {
"@type": "Offer",
"price": "239.00",
"priceCurrency": "PLN",
"availability": "https://schema.org/InStock",
"url": "https://example.com/domek-dla-lalek-maja/"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "47"
},
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "Sklep", "item": "https://example.com/"},
{"@type": "ListItem", "position": 2, "name": "Zabawki drewniane", "item": "https://example.com/zabawki-drewniane/"},
{"@type": "ListItem", "position": 3, "name": "Domek dla lalek Maja"}
]
}
}
Zwróć uwagę na kilka szczegółów: price jest stringiem, nie liczbą (Google wymaga takiego formatu), availability to pełny URL do schema.org, a BreadcrumbList jest zagnieżdżony w tym samym obiekcie.
Częsty błąd: wstawianie "price": 239 (bez cudzysłowów) zamiast "price": "239.00". Google odrzuca takie markup jako niepoprawne, a walidator wyświetli ostrzeżenie o niezgodności typu danych.
Wdrożenie przez Rank Math (metoda rekomendowana)
Rank Math to metoda, którą stosuję w zdecydowanej większości projektów WooCommerce. Działa zarówno w wersji darmowej, jak i Pro (59 USD rocznie). Konfiguracja jest stosunkowo prosta.
Krok 1: aktywuj moduł Schema w Rank Math. Wejdź w Rank Math > Dashboard > Modules i upewnij się, że "Schema Markup" jest włączony (zielona ikona).
Krok 2: ustaw domyślny typ schema dla produktów WooCommerce. Wejdź w Rank Math > Titles & Meta > Products (lub WooCommerce, jeśli widzisz tę zakładkę) i znajdź pole "Schema Type" - ustaw na "Product".
Krok 3: sprawdź, czy WooCommerce ma włączone natywne recenzje produktów. Wejdź w WooCommerce > Ustawienia > Produkty i upewnij się, że opcja "Włącz recenzje produktów" jest zaznaczona. Rank Math pobiera recenzje właśnie stąd do generowania AggregateRating.
Krok 4 (opcjonalny, Rank Math Pro): dla konkretnego produktu możesz edytować schema ręcznie przez panel Rank Math na stronie edycji produktu, zakładka Schema. Przydatne gdy chcesz wpisać GTIN (EAN), MPN lub inne identyfikatory produktu, które Google coraz częściej wymaga przy produktach sprzedawanych przez wielu sprzedawców.
Porównanie opcji schema dla WooCommerce
| Kryterium | Rank Math Free | Rank Math Pro | Yoast SEO Premium |
|---|---|---|---|
| Cena | 0 PLN | ok. 250 PLN/rok | ok. 400 PLN/rok |
| Automatyczny Product schema | tak | tak | tak |
| AggregateRating z WC recenzji | tak | tak | wymaga wtyczki recenzji |
| Ręczna edycja pól schema | nie | tak | ograniczona |
| Identyfikatory GTIN/MPN | nie | tak | nie natywnie |
| BreadcrumbList | tak | tak | tak |
| Walidacja inline w panelu | nie | tak | nie |
Wdrożenie manualne JSON-LD (kiedy ma sens)
Od czasu do czasu trafiam na projekt, gdzie wtyczka SEO jest zablokowana przez klienta, albo mam do czynienia z headless WooCommerce lub niestandardowym motywem blokującym standardowe hooki. W takich sytuacjach ręczne wstawianie JSON-LD jest jedyną opcją.
Najprostszy sposób to dodanie kodu do funkcji.php motywu (lub mu-plugin), który wstawia blok <script type="application/ld+json"> w sekcji <head> na stronach produktu:
add_action( 'wp_head', 'dwb_product_schema' );
function dwb_product_schema() {
if ( ! is_singular( 'product' ) ) return;
global $post;
$product = wc_get_product( $post->ID );
if ( ! $product ) return;
$schema = [
'@context' => 'https://schema.org/',
'@type' => 'Product',
'name' => $product->get_name(),
'sku' => $product->get_sku(),
'offers' => [
'@type' => 'Offer',
'price' => $product->get_price(),
'priceCurrency' => get_woocommerce_currency(),
'availability' => $product->is_in_stock()
? 'https://schema.org/InStock'
: 'https://schema.org/OutOfStock',
'url' => get_permalink( $post->ID ),
],
];
$rating = $product->get_average_rating();
$count = $product->get_review_count();
if ( $rating > 0 && $count > 0 ) {
$schema['aggregateRating'] = [
'@type' => 'AggregateRating',
'ratingValue' => (string) $rating,
'reviewCount' => (string) $count,
];
}
echo '<script type="application/ld+json">' . wp_json_encode( $schema ) . '</script>';
}
Ważna uwaga: jeśli używasz Rank Math lub Yoast, wyłącz ich schema dla WooCommerce przed dodaniem własnego kodu, żeby uniknąć duplikacji. Google jest tolerancyjny na duplikaty, ale Rich Results Test flaguje je jako ostrzeżenie.
Checklista wdrożenia schema dla WooCommerce
- Rank Math > Modules: moduł Schema aktywny
- Rank Math > Titles & Meta > Products: Schema Type ustawiony na Product
- WooCommerce > Ustawienia > Produkty: recenzje produktów włączone
- Przynajmniej kilka produktów ma recenzje klientów (do testowania AggregateRating)
- Breadcrumbs włączone w motywie lub Rank Math
- Brak duplikatów schema (wyłącz schema w WooCommerce jeśli używasz Rank Math)
- Walidacja min. 3 reprezentatywnych produktów w Rich Results Test
- Sprawdzenie Search Console > Ulepszenia > Dane produktów po 2-3 tygodniach
Walidacja w Google Rich Results Test
Po wdrożeniu nie zakładaj że działa - sprawdź. Google udostępnia dwa darmowe narzędzia, które stosuję zawsze.
Rich Results Test (search.google.com/test/rich-results) - wpisz URL strony produktu i kliknij "Testuj URL". Narzędzie pokaże wykryte typy schema, wymagane i opcjonalne pola oraz ewentualne błędy. Jeśli widzisz zielony komunikat "Strona kwalifikuje się do wyników z elementami rozszerzonymi", jesteś na dobrej drodze.
Schema Markup Validator (validator.schema.org) - bardziej techniczne narzędzie sprawdzające zgodność ze specyfikacją schema.org, niezależnie od tego, co Google obsługuje. Przydatne do wykrywania literówek w nazwach właściwości.
Najczęstsze błędy, które widzę przy walidacji sklepów WooCommerce:
Missing field "offers"- WooCommerce nie generuje Offer, albo Rank Math nie ma ustawionego Product schemaMissing field "priceCurrency"- brak waluty, zwykle przy ręcznym kodzieThe value of ratingValue must be between 1 and 5- produkt ma ocenę 0 (brak recenzji), a schema mimo to generuje AggregateRatingValue provided for price is invalid- cena jako liczba zamiast string, albo z przecinkiem zamiast kropki- Duplikacja schema - dwie sekcje JSON-LD z tym samym typem Product na jednej stronie
W Google Search Console po 2-3 tygodniach od wdrożenia wejdź w Ulepszenia > Dane produktów. Zobaczysz ile stron jest poprawnych, ile ma ostrzeżenia i błędy, co pozwala naprawić problemy masowo.
Plusy
- Rich snippets zwiększają CTR o 20-30% według danych z kampanii SEO
- Gwiazdki i ceny wyróżniają produkt wizualnie na tle konkurencji bez gwiazdek
- BreadcrumbList poprawia nawigację w SERP i jasno pokazuje kategorię produktu
- Rank Math automatyzuje całość dla standardowych sklepów WooCommerce
- Darmowe narzędzia Google do walidacji dostępne od ręki
Minusy
- Google nie gwarantuje wyświetlenia rich snippets nawet przy poprawnym schemacie
- AggregateRating wymaga realnych recenzji klientów - sklep bez recenzji nie dostanie gwiazdek
- Duplikacja schema (WooCommerce + wtyczka SEO) powoduje błędy walidacji
- Identyfikatory GTIN/MPN wymagane przez Google dla popularnych produktów są trudne do zebrania
- Czas od wdrożenia do efektów to 4-8 tygodni - nie ma natychmiastowych rezultatów
Typowe problemy, które napotykam w projektach klientów
Przy wdrożeniach dla klientów z branży e-commerce zestaw problemów powtarza się. Przy sklepie ze sprzętem sportowym, gdzie Rank Math był zainstalowany, ale moduł Schema był wyłączony od miesięcy, produkty miały tylko domyślny markup WooCommerce bez Offer. Po aktywacji modułu i walidacji 20 losowych produktów - wszystkie przeszły bez błędów. Gwiazdki pojawiły się po 5 tygodniach.
Inny scenariusz: klient zainstalował jednocześnie Rank Math i osobną wtyczkę Rich Snippets. Duplikacja JSON-LD powodowała, że Rich Results Test zgłaszał sprzeczne wartości ceny (jeden plugin pobierał cenę z WooCommerce, drugi z meta pola wtyczki). Rozwiązanie - deaktywacja jednej wtyczki, wybór jednego źródła prawdy.
Jeśli myślisz o szerszym pozycjonowaniu sklepu WooCommerce, schema to jeden element układanki - dane strukturalne bez szybkości strony, dobrej struktury URL i opisów kategorii dadzą połowę efektu.
Warto też wiedzieć, że schema.org i rich snippets to nie tylko Google. Dane strukturalne pomagają również w wyświetlaniu kart produktów w Bing, a w kontekście AI Overviews i chatbotów jak Perplexity - poprawny markup ułatwia cytowanie Twojego produktu jako wynik. Pisałem o tym szerzej przy okazji tematu o promowaniu firmy w ChatGPT i Perplexity.
Jeśli masz WooCommerce z Rank Math i nadal nie widzisz gwiazdek po 8 tygodniach, sprawdź jedno: czy produkty z recenzjami mają włączony tryb weryfikacji zakupu. Google odrzuca AggregateRating podejrzany o fake reviews. Recenzje od niezalogowanych lub nieweryfikowanych klientów mogą być ignorowane.
Schema a redesign sklepu - o czym nie zapomnieć
Przy redesignie strony bez utraty pozycji w Google dane strukturalne są często pomijane w checklistach migracji. Zmiana motywu może wyłączyć breadcrumbs generowane przez stary motyw, zmiana struktury URL invaliduje BreadcrumbList, a nowy motyw może dodać własny schema, który duplikuje Rank Math.
Przed każdą migracją WooCommerce robię eksport schema z co najmniej 10 reprezentatywnych produktów (skrypt PHP przez WP-CLI), walidację przed migracją i porównanie po. To 30 minut pracy, które oszczędza tygodnie debugowania po wdrożeniu.
Dane strukturalne to nie magia i nie skrót do pozycji 1. To standard techniczny, który umożliwia Google pokazanie użytkownikowi więcej informacji bez wchodzenia na Twoją stronę. Sklep, który to ma poprawnie wdrożone, wygląda bardziej wiarygodnie w wynikach, dostaje więcej kliknięć i sprzedaje więcej. To wystarczający powód, żeby poświęcić na to jeden dzień pracy.
Tak, ale w bardzo ograniczonym zakresie. WooCommerce generuje podstawowy markup Product z nazwą, ceną i dostępnością, jednak bez AggregateRating, Review ani pełnej struktury Offer. W praktyce taki schema rzadko wystarczy do wyświetlenia gwiazdek lub cen w Google. Potrzebujesz wtyczki SEO lub dedykowanego pluginu schema. Zazwyczaj między 2 a 8 tygodni od indeksowania strony z poprawnym schematem. Google musi ponownie zaindeksować stronę, przeanalizować dane strukturalne i zdecydować, czy kwalifikują się do rich snippets. Możesz przyspieszyć ponowne indeksowanie przez Google Search Console, klikając 'Żądaj indeksowania' dla konkretnego URL. Tak, Rank Math w wersji darmowej generuje kompletny schema dla WooCommerce, włącznie z Product, Offer, AggregateRating i BreadcrumbList. Wersja Pro (59 USD rocznie) dodaje możliwość ręcznego edytowania każdego pola schematu bezpośrednio z panelu produktu, co przydaje się przy niestandardowych identyfikatorach GTIN czy MPN. Product schema działa na poziomie stron produktów i kategorii sklepu, informując Google o cenie, dostępności i ocenach. FAQ schema wstawia się na strony poradnikowe lub landing page z sekcją pytań i odpowiedzi. LocalBusiness opisuje dane firmowe: adres, godziny otwarcia, numer telefonu. To trzy osobne typy - możesz mieć wszystkie na tej samej domenie, ale nie mieszaj ich na tej samej stronie. Najczęstsze to: brak pola 'offers' z 'price' i 'availability', brak właściwości 'priceCurrency', konflikt między schema z WooCommerce a schema z Rank Math (duplication), oraz AggregateRating z ratingValue=0 gdy produkt nie ma recenzji. Rich Results Test wskaże dokładnie, które pola są problematyczne. Nie, w 95% przypadków nie musisz. Rank Math, Yoast SEO Premium lub dedykowane wtyczki jak Schema Pro generują JSON-LD automatycznie na podstawie danych z WooCommerce. Ręczne pisanie ma sens głównie przy niestandardowych typach (np. Course, Event) albo gdy chcesz dodać identyfikatory GTIN pobierane z zewnętrznej bazy.Najczęstsze pytania
Czy WooCommerce automatycznie dodaje schema.org do stron produktów?
Jak długo po wdrożeniu schema Google zaczyna pokazywać gwiazdki w wynikach?
Czy Rank Math Free wystarczy do wdrożenia pełnego schema dla WooCommerce?
Czym różni się schema dla WooCommerce od FAQ i LocalBusiness?
Jakie błędy w schema najczęściej blokują rich snippets w WooCommerce?
Czy muszę ręcznie wpisywać JSON-LD, żeby wdrożyć schema.org w WooCommerce?
Potrzebujesz pomocy z projektem?
Robię strony WordPress i sklepy Shoper od 2500 zł. Partner Shoper, 120+ projektów.
- Odpowiedź w 24h
- Certyfikowany Partner Shoper
- 120+ zrealizowanych projektów
- Zgodność z RODO, pełna ochrona danych