Użytkownik → WordPress → Baza danych
↓
Szablony PHP → HTML
Headless WordPress oddziela backend od frontendu:
Code
Użytkownik → Next.js (frontend)
↓
REST API / GraphQL
↓
WordPress (backend) → Baza danych
WordPress zarządza treścią i wystawia ją przez lub , a Next.js renderuje interfejs.
Zalety headless WordPress
1. Wydajność headless WordPress
Next.js oferuje strategie, które WordPress nie obsługuje natywnie:
Code
// Static Site Generation — HTML generowany przy buildzieexport async function generateStaticParams() { const posts = await getPosts() return posts.map((post) => ({ slug: post.slug }))}// Incremental Static Regeneration — rewalidacja w tleexport const revalidate = 60 // Odśwież co 60 sekund// Server Components — streaming, partial hydrationexport default async function Page() { const posts = await getPosts() // Wykonuje się na serwerze return <PostList posts={posts} />}
Wynik? Strony ładują się w milisekundach, a Core Web Vitals się poprawiają.
2. Lepsza praca programistyczna w Next.js
Code
// TypeScript, komponenty, hooksinterface Post { id: number title: string slug: string content: string}function PostCard({ post }: { post: Post }) { return ( <article className="p-4 border rounded-lg"> <h2 className="text-xl font-bold">{post.title}</h2> </article> )}
Zamiast szablonów PHP masz React — lepsze narzędzia, automatyczne odświeżanie po zmianach i kontrolę typów.
3. Elastyczność frontendu poza motywem WordPressa
Motyw WordPressa ogranicza Cię do tego, co zostało przewidziane przez autora, ale w React możesz zbudować znacznie bardziej dopasowany do swoich potrzeb interfejs:
Interaktywne panele
Animacje i przejścia
Aktualizacje w czasie rzeczywistym
Progressive Web App
Współdzielony kod z aplikacją mobilną (React Native)
4. Bezpieczeństwo headless WordPress
Frontend nie ma bezpośredniego dostępu do bazy danych:
Code
Atak na frontend → Next.js (statyczny HTML)
↓
API (tylko odczyt)
↓
WordPress (ukryty, może być w VPN)
Panel administracyjny WordPressa może być schowany przed światem, co zmniejsza powierzchnię ataku.
Frontend skaluje się automatycznie, podczas gdy backend obsługuje głównie redaktorów i żądania związane z .
Wady headless WordPress
1. Większa złożoność architektury
Zamiast jednego systemu masz równolegle dwa:
Aspekt
Tradycyjny WP
Headless WP + Next.js
Wdrożenie
1 serwer
2+ środowiska
Hosting
~50 zł/mies
~100-300 zł/mies
Diagnostyka
Logi PHP
Logi + ślady + edge
Zespół
PHP/WP dev
PHP + React + DevOps
2. Podgląd i edycja treści
W tradycyjnym WP klikasz "Podgląd" i widzisz dokładnie, jak wygląda wpis - w headless trzeba zbudować ten mechanizm osobno:
Code
// Musisz zbudować osobny system podglądu// app/api/draft/route.tsimport { draftMode } from 'next/headers'import { redirect } from 'next/navigation'export async function GET(request: Request) { const { searchParams } = new URL(request.url) const postId = searchParams.get('post_id') const secret = searchParams.get('secret') if (secret !== process.env.PREVIEW_SECRET) { return new Response('Invalid secret', { status: 401 }) } // Włącz Draft Mode (Next.js 13.4+) const draft = await draftMode() draft.enable() redirect(`/blog/preview/${postId}`)}
Każda interakcja między treścią a frontendem wymaga kodu.
3. Wtyczki WordPressa przestają działać na frontendzie
Wtyczka "Contact Form 7"? Nie renderuje się na Next.js, dlatego trzeba zrobić tak:
Przebudować formularz w React,
Stworzyć endpoint API,
Obsłużyć walidację i wysyłkę.
Code
// To co w WP zajmuje 5 minut, tutaj to kilka godzinasync function handleSubmit(data: FormData) { const response = await fetch('https://api.example.com/contact', { method: 'POST', body: JSON.stringify({ name: data.get('name'), email: data.get('email'), message: data.get('message'), }), }) if (!response.ok) { throw new Error('Failed to send') }}
E-commerce w headless jest możliwy, ale zwykle przestaje być "prostym WordPressem z Reactem", ponieważ dochodzi bardzo dużo logiki, którą w klasycznym WooCommerce dostajesz praktycznie od razu. I tak:
Koszyk i proces zakupowy — musisz zbudować od zera,
Płatności — integracja z Przelewy24/Stripe po Twojej stronie,
Stan magazynowy — synchronizacja w czasie rzeczywistym,
Kupony, rabaty i wysyłka — logika jest do przepisania.
Dla większości sklepów lepszym wyborem będzie klasyczny WooCommerce.
Najczęściej pomijanym kosztem jest proces redakcyjny
Na slajdzie sprzedażowym headless wygląda bardzo prosto: WordPress do treści, Next.js do frontendu. W praktyce największy koszt często nie leży w samym renderowaniu, ale w codziennej pracy zespołu redakcyjnego.
Musisz przemyśleć:
Podgląd szkiców: redaktor oczekuje przycisku "Podgląd", który naprawdę pokazuje szkic na froncie.
Webhooki i rewalidację: po publikacji wpisu frontend musi się odświeżyć bez ręcznego wdrożenia.
Unieważnianie cache: jeśli cache jest agresywny, redakcja widzi stare treści i zgłasza błędy, których technicznie już nie ma.
Obsługę bloków i shortcodów: REST API zwraca post.content.rendered jako surowy HTML — renderowanie go przez dangerouslySetInnerHTML otwiera XSS, a parseowanie bloków do komponentów React to nietrywialny zakres. WPGraphQL radzi sobie z tym lepiej przez dedykowaną schemę bloków Gutenberga, ale wtedy musisz zrezygnować z prostoty REST.
Wyszukiwarkę, okruszki nawigacyjne, powiązane wpisy i formularze: w tradycyjnym WP to często jedna wtyczka, a w headless to osobny zakres implementacji.
Headless wygląda tanio tylko w pierwszym tygodniu projektu. Prawdziwy rachunek
wystawia proces redakcyjny.
— prawda o kosztach headless
Drzewo decyzyjne: kiedy wybrać headless WordPress?
Code
Czy potrzebujesz WooCommerce?
├─ TAK → Tradycyjny WordPress
└─ NIE → Czy zespół redakcyjny zna tylko WordPressa?
├─ TAK → Czy budżet > 50k na dopracowaną edycję treści?
│ ├─ TAK → Headless możliwy
│ └─ NIE → Tradycyjny WordPress
└─ NIE → Czy potrzebujesz niestandardowych interakcji (animacje, panele)?
├─ TAK → Headless WordPress
└─ NIE → Czy Core Web Vitals są krytyczne?
├─ TAK → Headless lub WP + wtyczka cache
└─ NIE → Tradycyjny WordPress
Realne przypadki użycia headless WordPress
Kiedy headless WordPress ma sens?
Blog firmowy z niestandardowym projektem graficznym
Treści zarządzane przez marketing w WP,
Projekt wdrażany przez zespół frontendowy w React,
Wydajność krytyczna dla SEO,
Brak e-commerce.
Portal informacyjny
Tysiące artykułów,
Wielu edytorów,
Potrzeba testów A/B układu strony,
Wysokie wymagania wydajnościowe.
Strona produktowa SaaS
Strona główna + blog w WordPress,
Aplikacja w React,
Wspólny design system,
Potrzeba szybkich zmian treści bez wdrożenia.
Kiedy tradycyjny WordPress będzie lepszy?
Sklep internetowy
WooCommerce robi większość pracy,
Wtyczki do płatności, wysyłki i faktur,
Headless = miesiące dodatkowej pracy,
Mała strona firmowa
5-10 podstron
Formularz kontaktowy
Edycja przez właściciela
Budżet < 10k
Strona z wieloma wtyczkami
System rezerwacji,
Strefy członkowskie,
LMS (kursy online),
Każda wtyczka = osobny kod w React.
Alternatywy dla headless WordPress
Zanim zdecydujesz się na headless WordPress, przemyśl dobrze alternatywne rozwiązania:
1. WordPress z dobrym hostingiem i cache
Code
WordPress + LiteSpeed Cache + CDN
= znaczna poprawa TTFB i Core Web Vitals
= ułamek kosztów wdrożenia headless
2. Statyczny generator i headless CMS
Code
Sanity / Strapi / Contentful + Next.js
= Wygodniejsza edycja treści niż przez WP API
= Brak bagażu PHP
= Wyższe koszty CMS (dla dużych projektów)
3. Next.js i MDX dla blogów technicznych
Code
Markdown w repozytorium
= Bez CMS-a
= Praca z treścią przez Git
= Najlepsza wydajność
// app/page.tsxasync function getPosts() { const res = await fetch( 'https://twoj-wordpress.pl/wp-json/wp/v2/posts?_embed=true' ) return res.json()}export default async function Home() { const posts = await getPosts() return ( <main> <h1>PoC - Headless WordPress</h1> {posts.map((post) => ( <article key={post.id}> {/* .rendered zawiera encje HTML — dekoduj przez bibliotekę (np. he), nie przez dangerouslySetInnerHTML, które otwiera XSS */} <h2>{decodeHtmlEntities(post.title.rendered)}</h2> </article> ))} </main> )}
Oceń po 2-3 dniach, czy to ma sens.
2. Infrastruktura headless WordPress
Code
WordPress:
├─ Hosting: dowolny z PHP 8+ i SSL
├─ Wtyczki: ACF (pola niestandardowe), Yoast (SEO API), JWT Auth (tylko przy draft mode lub endpointach wymagających uwierzytelnienia)
└─ Cel: Tylko admin, ukryty za VPN (opcjonalnie)
Next.js:
├─ Hosting: Vercel (najprostszy) lub Netlify
├─ CI/CD: GitHub Actions → automatyczne wdrożenie
└─ Cel: Publiczny frontend
3. Plan migracji WordPressa do Next.js
Code
Tydzień 1: Konfiguracja infrastruktury, PoC
Tydzień 2-3: Kluczowe strony (home, about, contact)
Tydzień 4-5: Lista wpisów + pojedynczy wpis
Tydzień 6: SEO, metadane, sitemap
Tydzień 7: Tryb podglądu, przypadki brzegowe
Tydzień 8: Testy, kontrola jakości, publikacja
To plan dla doświadczonego zespołu pracującego wyłącznie nad tym projektem i ograniczonego zakresu. Jeśli dochodzą wielojęzyczność, wyszukiwarka, zaawansowane SEO, niestandardowe bloki i rozbudowany proces redakcyjny, harmonogram bardzo szybko się wydłuża.
Headless WordPress czy tradycyjny WP: tabela decyzyjna
Wybierz Headless
Wybierz Tradycyjny WP
Niestandardowy frontend
Standardowy motyw OK
Zespół React dostępny
Tylko PHP/WP
Budżet > 30-50k
Budżet < 20k
Blog/portal/strona produktowa
E-commerce
Wydajność priorytetem
Szybkie wejście na rynek
Długoterminowy projekt
MVP / jednorazowy projekt
Headless WordPress to jeden z możliwych kierunków, ale nie jedyny. Zanim zapadnie decyzja o architekturze, warto przejść przez pełną matrycę decyzyjną uwzględniającą budżet, profil treści, możliwości zespołu i wymagania SEO — tę analizę krok po kroku przeprowadzam w artykule WordPress, Astro czy Next.js — matryca decyzyjna przed migracją.
Elastyczne i wydajne narzędzia dla biznesu, które dotrzymają kroku Twojemu rozwojowi.
Czym jest headless WordPress i jak różni się od klasycznego?
Klasyczny WordPress to monolit: PHP renderuje HTML bezpośrednio z szablonów. Headless WordPress oddziela backend (CMS — zarządzanie treścią) od frontendu (warstwy prezentacji). WordPress wystawia dane przez REST API lub GraphQL, a Next.js albo inny framework pobiera je i renderuje interfejs. Efekt: pełna kontrola nad frontendem, możliwość SSG/ISR i własny design system. Koszt: dłuższy czas wdrożenia i większa złożoność architektury.
Kiedy headless WordPress ma sens?
Headless opłaca się, gdy: (1) potrzebujesz niestandardowego frontendu w React, którego nie da się wygodnie zbudować na szablonach WP; (2) wydajność i Core Web Vitals są krytyczne dla SEO; (3) zespół redakcyjny zna WordPressa i nie chcesz przenosić go do innego CMS-a; (4) projekt to blog firmowy, portal albo strona produktowa, ale nie e-commerce. Wymagany budżet to zwykle minimum 30-50k na solidne wdrożenie. Poniżej tej kwoty klasyczny WP z dobrą wtyczką cache często daje większość korzyści za ułamek kosztów.
Kiedy zostać przy klasycznym WordPressie?
Klasyczny WP wygrywa, gdy projekt obejmuje e-commerce z WooCommerce, małą stronę firmową, budżet poniżej 20k, szybkie MVP albo stronę opartą na wielu wtyczkach, np. rezerwacjach, LMS-ach czy strefach członkowskich. W headless każda taka funkcja oznacza osobną implementację w React, a nie tylko instalację wtyczki.
Jakie są ukryte koszty headless WordPress?
Najczęściej pomijane są: (1) podgląd szkiców — redaktor oczekuje działającego podglądu na rzeczywistym froncie; (2) webhooki i rewalidacja — po publikacji frontend musi się odświeżyć; (3) unieważnianie cache — agresywny cache może pokazywać redakcji stare treści; (4) bloki Gutenberga — nie każdy blok ma odpowiednik w React; (5) wyszukiwarka, okruszki nawigacyjne, powiązane wpisy i formularze — w WP to często jedna wtyczka, w headless osobny zakres prac. Te koszty potrafią podwoić harmonogram projektu.
Jakie są alternatywy dla headless WordPress?
Warto dobrze przemyśleć trzy opcje: (1) WordPress + dobry hosting + wtyczka cache, np. LiteSpeed albo WP Rocket; (2) nowoczesny headless CMS, np. Sanity, Contentful lub Strapi, połączony z Next.js; (3) Next.js + MDX dla technicznego bloga i treści zarządzanej przez Git. Wszystko generalnie zależy od wymagań redakcji, budżetu i tego, kto będzie później utrzymywał projekt.
Jak pobierać dane z WordPress w Next.js?
WordPress REST API jest dostępne pod /wp-json/wp/v2/posts. W Next.js App Router komponent serwerowy wywołuje fetch z odpowiednią strategią cache, np. force-cache dla SSG, no-store dla danych na żywo albo revalidate dla ISR. Przy bogatszych zapytaniach, polach niestandardowych i relacjach warto rozważyć wtyczkę WPGraphQL. Metadane SEO z Yoasta możesz pobrać przez REST API i zmapować na Next.js Metadata API.
Ile trwa migracja do headless WordPress?
Dla doświadczonego zespołu i ograniczonego zakresu, np. bloga oraz stron statycznych, realny termin to 6-8 tygodni. Jeśli dochodzą wielojęzyczność, zaawansowane bloki, rozbudowany proces redakcyjny, wyszukiwarka i formularze z integracjami, harmonogram wydłuża się do 3-6 miesięcy. Rekomendacja: zacznij od 2-3-dniowego Proof of Concept, zanim podejmiesz decyzję o pełnej migracji.
O autorze
Maciej Sala
Maciej Sala — Product Manager i Frontend Developer z bogatym doświadczeniem w marketingu internetowym oraz SEO. Na co dzień pracuje z Reactem, Next.js i TypeScriptem, a ostatnio także z Astro i narzędziami do automatyzacji procesów AI. Sprawnie łączy perspektywę produktową z praktycznym podejściem do kodu. Przez kilka lat był związany z branżą gier wideo jako project manager i game designer. Absolwent historii na Uniwersytecie Jagiellońskim oraz studiów podyplomowych z marketingu internetowego na AGH w Krakowie. Po godzinach trenuje na siłowni, maluje figurki i rozwijam własne projekty.
Z jednej strony mamy WordPressa — weterana, który wciąż napędza ponad 40% globalnego internetu. Z drugiej Next.js, flagowy framework wśród nowoczesnych technologii opartych na Reakcie. Cel obu narzędzi jest ten sam, by wypuścić stronę w świat. Różnią się jednak diametralnie drogą do tego celu, a wybór między nimi to kwestia tego, co konkretny projekt ma osiągnąć i kto będzie go utrzymywał.
Maciej Sala
Founder StriveLab
WordPress to nie tylko PHP i szablony, ponieważ od wersji 4.7 ma wbudowane REST API , dzięki któremu może funkcjonować jako headless CMS . Backend w WordPressie, frontend w React lub Next.js to w wielu projektach bardzo rozsądne rozwiązanie.
Maciej Sala
Founder StriveLab
Decyzja została podjęta i łączymy headless WordPress z Next.js. Klient zostaje przy znanym edytorze, a Ty dostajesz wydajny frontend. Teraz trzeba to tylko ze sobą spiąć, więc czeka Cię trochę pracy: klient GraphQL , zapytania, ISR , webhooki i obrazy z WordPressa w next/image . Ten tutorial przeprowadza przez nie po kolei.