
Ostateczny Przewodnik po WP REST API (2026): Headless, Autoryzacja i Własne Endpointy
Spis treści
Przestań myśleć o WordPressie jak o “narzędziu do blogowania”. W 2026 roku WordPress to Silnik Headless CMS. Napędza 45% sieci, ale coraz częściej “Głową” jest React, Vue lub natywna aplikacja iOS.
Mostem między WordPressem a nowoczesną siecią jest WP REST API.
Eksponuje ono Twoje treści jako dane JSON: twojastrona.pl/wp-json/wp/v2/posts.
W tym 1500-słowowym manualu inżynierskim wyjdziemy poza standardowe zapytania GET. Zbudujemy własne endpointy, zabezpieczymy je nowoczesną autoryzacją i zoptymalizujemy dla aplikacji headless o dużym ruchu.
Część 1: Dlaczego REST API ma znaczenie w 2026
Klasyczny, “monolityczny” motyw WordPressa (szablony PHP) jest niezawodny, ale ograniczony. REST API pozwala na:
- Odseparowany Frontend: Użyj Next.js lub Astro dla błyskawicznego ładowania stron.
- Aplikacje Mobilne: Szyj treści bezpośrednio do React Native lub Swift.
- Integracje: Automatycznie łącz swój sklep WooCommerce z CRM lub ERP.
Część 2: Autoryzacja (Bezpieczeństwo Przede Wszystkim)
Domyślnie API jest publiczne dla operacji ODCZYTU. Ale dla ZAPISU (tworzenie postów, aktualizacja danych użytkownika), potrzebujesz autoryzacji. Cookie Auth (Nonces) jest dla wtyczek działających wewnątrz WP Admin. Dla zewnętrznych aplikacji potrzebujesz:
1. Hasła Aplikacji (Wbudowane)
Od WP 5.6 jest to standard w jądrze.
- Zastosowanie: Skrypty, Zapier, Automatyzacja.
- Konfiguracja: Użytkownicy -> Profil -> Hasła Aplikacji.
- Nagłówek:
Authorization: Basic base64(user:password)
2. JWT (JSON Web Tokens)
Dla Użytkowników Frontendu Headless (np. strona “Moje Konto” w Next.js).
- Mechanizm: Użytkownik loguje się -> dostaje Token -> wysyła Token w Nagłówku
Authorization: Bearer <token>. - Wtyczka: Użyj “JWT Authentication for WP REST API”.
Część 3: Tworzenie Własnych Endpointów
Domyślne endpointy (/wp/v2/posts) są często przeładowane (za dużo danych) lub niewystarczające (brak danych).
Nigdy nie hakuj core’a. Rejestruj własne trasy.
Scenariusz: Chcemy endpoint, który zwraca tylko Tytuł i Cenę produktów, dla aplikacji mobilnej.
add_action( 'rest_api_init', function () {
register_rest_route( 'wppoland/v1', '/featured-products', array(
'methods' => 'GET',
'callback' => 'wppoland_get_featured_products',
'permission_callback' => '__return_true', // Publiczny endpoint
) );
} );
function wppoland_get_featured_products() {
$args = [
'post_type' => 'product',
'posts_per_page' => 5,
'tax_query' => [[ 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured' ]]
];
$query = new WP_Query($args);
$data = [];
foreach($query->posts as $post) {
$product = wc_get_product($post->ID);
$data[] = [
'id' => $post->ID,
'title' => $post->post_title,
'price' => $product->get_price(),
'image' => get_the_post_thumbnail_url($post->ID, 'medium')
];
}
return new WP_REST_Response($data, 200);
}
Wynik: Czysta, jednolita odpowiedź JSON. 90% lżejsza niż domyślny endpoint.
Część 4: Wydajność i Caching
REST API jest notorycznie wolne, bo ładuje cały rdzeń WordPressa. Standardowe zapytanie trwa 300-600ms. Dla aplikacji o dużym ruchu to za wolno.
Naprawa: Object Caching
Musisz cache’ować odpowiedzi API.
function wppoland_get_cached_products() {
$cache_key = 'api_featured_products';
$data = get_transient($cache_key);
if ( false === $data ) {
$data = wppoland_get_featured_products(); // Drogie Zapytanie
set_transient($cache_key, $data, 12 * HOUR_IN_SECONDS);
}
return $data;
}
Część 5: Architektura Headless z Next.js
W konfiguracji Headless:
- WordPress to Baza Danych i Panel Admina.
- Next.js pobiera dane przez
fetch('https://api.strona.pl/wp-json/...').
Static Generation (SSG): Next.js pobiera wszystkie posty w czasie budowania. Użytkownik widzi statyczny HTML (0ms obciążenia bazy).
Podsumowanie
REST API to przyszłość skalowalności WordPressa.
- Zabezpiecz Hasłami Aplikacji.
- Rozszerz przez
register_rest_route. - Zbuforuj przez Transients.