Przejdź do treści

Headless WordPress z Next.js — kiedy ma sens, a kiedy nie

Headless WordPress z Next.js: zalety, koszty, proces redakcyjny, podgląd szkiców, SEO i sytuacje, w których klasyczny WordPress wygrywa.

Maciej Sala

Founder StriveLab

6 min czytaniaOpublikowano 26 lutego 2025 (Aktualizacja 4 czerwca 2026)

W tym artykule pokażę, kiedy headless WordPress + Next.js to bardzo dobry wybór, a kiedy lepszym rozwiązaniem jest tradycyjny WordPress.

Jeśli decyzja jest już podjęta i potrzebujesz technicznej implementacji, przejdź do tutoriala WPGraphQL + Next.js App Router — implementacja headless WordPress krok po kroku.

Czym jest headless WordPress z Next.js?

Tradycyjny WordPress to monolit:

Code
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 buildzie
export async function generateStaticParams() {
  const posts = await getPosts()
  return posts.map((post) => ({ slug: post.slug }))
}
 
// Incremental Static Regeneration — rewalidacja w tle
export const revalidate = 60 // Odśwież co 60 sekund
 
// Server Components — streaming, partial hydration
export 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, hooks
interface 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.

5. Skalowalność frontendu Next.js

Code
           ┌──────────────────────┐
           │   CDN (Vercel/CF)    │ ← miliony żądań, cache edge
           └──────────┬───────────┘
                      │
           ┌──────────▼───────────┐
           │     Next.js          │ ← serverless, autoskalowanie
           └──────────┬───────────┘
                      │
           ┌──────────▼───────────┐
           │   WordPress API      │ ← jeden serwer, rzadkie żądania
           └──────────────────────┘

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:

AspektTradycyjny WPHeadless WP + Next.js
Wdrożenie1 serwer2+ środowiska
Hosting~50 zł/mies~100-300 zł/mies
DiagnostykaLogi PHPLogi + ślady + edge
ZespółPHP/WP devPHP + 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.ts
import { 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 godzin
async 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')
  }
}

4. SEO w headless WordPress wymaga uwagi

WordPress z Yoastem daje dużą część od razu po konfiguracji. W Next.js musisz tę warstwę zbudować świadomie:

Code
// app/blog/[slug]/page.tsx
export async function generateMetadata({
  params,
}: {
  params: Promise<{ slug: string }>
}) {
  const { slug } = await params
  const post = await getPost(slug)
  const yoastData = post.yoast_head_json // jeśli masz Yoast API
 
  return {
    title: yoastData?.title || post.title,
    description: yoastData?.description || post.excerpt,
    openGraph: {
      title: yoastData?.og_title,
      description: yoastData?.og_description,
      images: [yoastData?.og_image?.[0]?.url],
    },
  }
}

5. WooCommerce podnosi koszt headless WordPress

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ść

Jak zacząć migrację do headless WordPress?

1.

Zanim przepiszesz cały serwis:

Code
npx create-next-app@latest headless-poc
cd headless-poc
Code
// app/page.tsx
async 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 HeadlessWybierz Tradycyjny WP
Niestandardowy frontendStandardowy motyw OK
Zespół React dostępnyTylko PHP/WP
Budżet > 30-50kBudżet < 20k
Blog/portal/strona produktowaE-commerce
Wydajność priorytetemSzybkie wejście na rynek
Długoterminowy projektMVP / 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.
Next.js

Często zadawane pytania

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.

Pomagam przekładać takie tematy na konkretne wdrożenia w frontendzie, SEO, analityce i procesie produktowym.

Skontaktuj się ze mną

Biblioteka wiedzy na temat Next.js

Czytaj dalej

Zobacz więcej wpisów
Next.js czy WordPress w 2026 roku? Co wybrać

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

Maciej Sala

Founder StriveLab

REST API WordPressa — integracja z React i Next.js

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

Maciej Sala

Founder StriveLab

WPGraphQL i Next.js: Poradnik Headless WordPress

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.

Maciej Sala

Maciej Sala

Founder StriveLab