REST API WordPressa — integracja z React i Next.js
Jak połączyć WordPress z nowoczesnym frontendem bez typowych pułapek? REST API, autentykacja, custom endpoints, cache i praktyczne przykłady z Next.js.
WordPress to nie tylko PHP i szablony. Od wersji 4.7 ma wbudowane REST API to styl projektowania interfejsów oparty na zasobach, metodach HTTP i bezstanowej komunikacji., dzięki któremu może działać jako headless CMS, czyli Content Management System, to system do zarządzania treścią bez ręcznej edycji kodu.. Backend w WordPressie, frontend w React lub Next.js — to w wielu projektach bardzo sensowny układ.
Krótka odpowiedź: WordPress REST API, czyli Application Programming Interface, definiuje sposób komunikacji między aplikacjami lub modułami. (dostępne pod /wp-json/wp/v2/) udostępnia treści jako JSON, co pozwala używać WordPressa jako headless CMS z dowolnym frontendem. W Next.js App Router pobierasz dane w Server Components przez fetch() z opcją next: { revalidate }, generujesz statyczne ścieżki przez generateStaticParams i obsługujesz CORS dla różnych domen. Do operacji zapisu potrzebujesz autentykacji — Application Passwords dla połączeń server-to-server lub JWT, czyli JSON Web Token, to podpisany token używany często do autoryzacji i przekazywania tożsamości użytkownika. przez wtyczkę.
Czym jest WordPress REST API?
REST API to interfejs HTTP do danych WordPressa. Zamiast renderować HTML, WordPress zwraca JSON:
To rozwiązanie jest sensowne głównie dla połączeń server-to-server albo zaplecza redakcyjnego. Nie wysyłaj takich danych uwierzytelniających do publicznego klienta w przeglądarce.
JWT (z wtyczką)
Zainstaluj wtyczkę "JWT Authentication for WP REST API":
// Transient API dla kosztownych operacjifunction get_featured_posts_cached() { $cached = get_transient('featured_posts'); if ($cached !== false) { return $cached; } $posts = expensive_query_here(); set_transient('featured_posts', $posts, HOUR_IN_SECONDS); return $posts;}
Porównanie: REST API vs GraphQL (WPGraphQL)
Aspekt
REST API
WPGraphQL
Setup
Wbudowane
Wymaga wtyczki
Elastyczność zapytań
Ograniczona
Pełna
Overfetching
Tak
Nie
Learning curve
Niższa
Wyższa
Tooling
Standardowe
Apollo, urql
Cache
Standardowy HTTP
Wymaga konfiguracji
Dla prostych projektów REST API wystarczy. Dla skomplikowanych aplikacji z wieloma relacjami — rozważ WPGraphQL.
FAQ
Jak włączyć WordPress REST API i sprawdzić, czy działa?
REST API jest domyślnie włączone od WordPressa 4.7. Warunkiem działania są włączone ładne permalinki (Ustawienia → Bezpośrednie odnośniki → dowolna opcja inna niż „Prosty"). Możesz przetestować API otwierając w przeglądarce twoja-domena.pl/wp-json/wp/v2/posts — jeśli widzisz JSON, API działa. Brak odpowiedzi najczęściej oznacza problem z permalinkami lub blokadę przez plugin bezpieczeństwa.
Jak pobrać posty z WordPress REST API w Next.js App Router?
W Server Component użyj fetch() z opcją next: { revalidate: 60 } dla ISR, czyli Incremental Static Regeneration, pozwala odświeżać strony statyczne po czasie bez pełnego rebuildu. (odświeżanie co 60 sekund) lub cache: 'force-cache' dla danych statycznych. Parametr _embed=true dołącza powiązane dane (featured image, kategorie) w jednym requeście. Dla stron generowanych statycznie zaimplementuj generateStaticParams, który zwróci listę slugów pobranych z API.
Jak skonfigurować CORS dla headless WordPress z frontendem na innej domenie?
Dodaj w functions.php lub wtyczce filtr rest_pre_serve_request, który ustawia nagłówki CORS tylko dla zaufanych domen z tablicy $allowed_origins. Nigdy nie używaj wildcardu * razem z Access-Control-Allow-Credentials: true. Dla środowiska lokalnego dodaj http://localhost:3000 do whitelist.
Jak autentykować się do WordPress REST API przy operacjach zapisu?
Dla połączeń server-to-server (Next.js backend → WordPress) użyj Application Passwords — tworzysz je w profilu użytkownika WordPressa i przekazujesz w nagłówku Authorization: Basic base64(user:password). W praktyce używaj ich wyłącznie po HTTPS, bo Basic Auth nie szyfruje poświadczeń sam z siebie. JWT (przez wtyczkę) jest alternatywą, ale wymaga zarządzania czasem życia tokena. Nigdy nie wysyłaj danych uwierzytelniających do publicznego klienta w przeglądarce.
Jak dodać własne pola do odpowiedzi WordPress REST API?
Użyj funkcji register_rest_field() wewnątrz hooka rest_api_init. Podajesz typ posta, nazwę pola i callback get_callback, który zwraca wartość. Możesz w ten sposób dodać pola z Advanced Custom Fields (ACF), obliczone wartości (jak czas czytania) lub metadane, które normalnie nie są widoczne w API.
Kiedy wybrać REST API, a kiedy WPGraphQL?
REST API jest wbudowane, nie wymaga dodatkowych wtyczek i sprawdza się świetnie do prostych projektów pobierających posty, strony i media. WPGraphQL (wtyczka) daje pełną elastyczność zapytań bez overfetchingu, co jest ważne przy złożonych relacjach danych (np. zagnieżdżone custom post types z ACF). Jeśli zaczynasz projekt headless, zacznij od REST API — przejdź na GraphQL, gdy poczujesz jego ograniczenia.
Jak zoptymalizować wydajność przy pobieraniu danych z WordPress REST API?
Używaj parametru _fields=id,title,slug,excerpt do pobierania tylko potrzebnych pól zamiast pełnych obiektów. Łącz _embed z _fields ostrożnie — możesz przypadkowo wyciąć _embedded z odpowiedzi. Po stronie WordPress cachuj kosztowne zapytania przez Transient API (set_transient()). Po stronie Next.js stosuj odpowiednie opcje revalidate — dłuższy czas dla rzadko zmienianych treści (3600 s dla kategorii), krótszy dla postów.
Podsumowanie
WordPress REST API to solidna podstawa do budowy headless CMS:
Wbudowane endpointy pokrywają 80% potrzeb
Custom endpoints dla specyficznej logiki
Autentykacja przez Application Passwords, cookie auth albo JWT zależnie od scenariusza
Next.js App Router z ISR to idealne combo
_embed i _fields optymalizują transfer danych
Headless WordPress + Next.js to architektura, która łączy prostotę zarządzania treścią z mocą nowoczesnego frontendu. Więcej o tym podejściu przeczytasz w Headless WordPress + Next.js — kiedy warto?
Jeśli chcesz zbudować lub uporządkować WordPressa, WooCommerce albo architekturę headless tak, żeby była szybka, wygodna redakcyjnie i sensowna biznesowo, skontaktuj się ze mną. Pomagam łączyć development, SEO, performance i realne cele sprzedażowe.
Maciej Sala — project manager i frontendowiec z doświadczeniem w marketingu internetowym. Na co dzień pracuję z Reactem, Next.js i TypeScriptem, łącząc perspektywę produktową z praktycznym podejściem do kodu. Przez kilka lat związany z branżą gier wideo jako project manager i game designer.
Absolwent historii na Uniwersytecie Jagiellońskim i studiów podyplomowych z marketingu internetowego na Akademii Górniczo-Hutniczej w Krakowie. Poza pracą trenuje na siłowni, maluje figurki i realizuje własne projekty.
Anthropic uderza w Figmę i Adobe — oto Claude Design
Anthropic wypuścił właśnie narzędzie AI do tworzenia stron, landing page'ów i prezentacji z promptu. Oto co wiemy o Claude Design i Opus 4.7 — i co to oznacza dla developerów.
Astro.js vs Next.js — które narzędzie wybrać w 2026 roku?
Fachowe porównanie Astro.js i Next.js z perspektywy developera pracującego na co dzień w Next.js. Architektura, wydajność, SEO, DX, koszty i konkretne use case — z benchmarkami i przykładami kodu.
WordPress → Next.js — migracja treści, redirecty 301 i zachowanie pozycji SEO
Jak przenieść stronę z WordPress na Next.js bez utraty pozycji w Google? Eksport treści, mapowanie URL, redirecty 301, migracja obrazów i weryfikacja indeksacji.