Przejdź do treści

WordPress REST API – konfiguracja, endpointy i praktyczne zastosowania

Opublikowano: 18 stycznia 2026 | Zaktualizowano: 8 marca 2026

WordPress REST API to interfejs, który pozwala komunikować się ze strona WordPress z zewnątrz – przez HTTP, w formacie JSON. Dzięki niemu możesz pobierać posty, tworzyć nowe treści, aktualizować dane czy budować frontend w React lub Next.js zasilany danymi z WordPressa. API jest wbudowane od wersji 4.7 i działa out of the box. W tym poradniku pokaze Ci jak z niego korzystać, jak tworzyć własne endpointy i jak zabezpieczyć dostęp.

Krótka odpowiedź

WordPress REST API jest włączone domyślnie od WP 4.

7. Endpointy dostępne sa pod adresem twojastrona.pl/wp-json/wp/v2/ (np. /wp-json/wp/v2/posts dla postów). Do odczytu publicznych danych nie potrzebujesz autentykacji. Do zapisu użyj Application Passwords (Użytkownicy > Profil > Hasła aplikacji) lub tokenu JWT. Własne endpointy rejestrujesz przez register_rest_route() w functions.php.

Usługi KC Mobile

Sprawdź naszą ofertę

Potrzebujesz pomocy specjalisty? Skorzystaj z naszych usług i rozwiń swój biznes online.

Co to jest WordPress REST API i do czego służy

REST API (Representational State Transfer) to sposób komunikacji między aplikacjami przez HTTP. WordPress używa go wewnętrznie (edytor Gutenberg komunikuje się z backendem przez REST API) i udostępnia go na zewnątrz.

Praktyczne zastosowania:
- Headless WordPress – frontend w React/Next.js/Astro, backend w WordPress
- Aplikacja mobilna pobierajaca treści ze strony WordPress
- Integracja z CRM – automatyczne tworzenie postów z systemu zewnętrznego
- Synchronizacja danych między kilkoma stronami WordPress
- Automatyzacja – skrypty tworzace, aktualizujace lub usuwajace treści

Jak to działa:
Wysyłasz zapytanie HTTP (GET, POST, PUT, DELETE) na określony adres (endpoint), a WordPress odpowiada danymi w formacie JSON.

Przykład: `GET https://twojastrona.pl/wp-json/wp/v2/posts` zwraca listę ostatnich postów w JSON.

REST API jest fundamentem nowoczesnego WordPressa. Gutenberg, aplikacja mobilna WordPress, a nawet niektorze wtyczki – wszystko korzysta z tego API w tle.

Wolisz, żebyśmy zrobili to za Ciebie?

Oszczędź czas i uniknij błędów. Zostaw kontakt – wdrożymy to rozwiązanie profesjonalnie.

  • Wdrożenie krok po kroku przez doświadczony zespół
  • Konkretny timeline + cena dopasowana do projektu
  • 20+ lat doświadczenia

Domyślne endpointy wp-json/wp/v2/

WordPress udostępnia zestaw wbudowanych endpointów. Oto najważniejsze:

Treści:
- `/wp-json/wp/v2/posts` – posty (wpisy blogowe)
- `/wp-json/wp/v2/pages` – strony statyczne
- `/wp-json/wp/v2/media` – pliki mediów (obrazki, PDF)
- `/wp-json/wp/v2/comments` – komentarze

Taksonomie:
- `/wp-json/wp/v2/categories` – kategorie
- `/wp-json/wp/v2/tags` – tagi

Użytkownicy:
- `/wp-json/wp/v2/users` – lista użytkownikow (domyślnie publiczna!)

Parametry zapytań:
- `?per_page=5` – liczba wyników na stronę
- `?page=2` – numer strony
- `?search=wordpress` – wyszukiwanie
- `?categories=3` – filtrowanie po kategorii
- `?orderby=date&order=desc` – sortowanie
- `?_embed` – dołączą powiązane dane (obrazek wyróżniający, autor)

Przykład pełnego zapytania:
`GET /wp-json/wp/v2/posts?per_page=3&categories=5&_embed`

Zwróci 3 ostatnie posty z kategorii ID 5, z dolaczonymi danymi autora i obrazka.

Narzędzia do pracy z REST API

Testowanie API bezpośrednio w przeglądarce działa tylko dla GET. Do pełnej pracy potrzebujesz narzędzia.

Postman (najpopularniejszy):
- Darmowy dla indywidualnych użytkownikow
- Interfejs graficzny do budowania zapytań
- Zapisujesz kolekcje endpointów, zmienne środowiskowe (np. URL strony)
- Automatyczne formatowanie JSON w odpowiedziach

Insomnia:
- Lzejsza alternatywa dla Postmana
- Open source, szybkie uruchamianie
- Obsługuje REST, GraphQL, gRPC

curl (linia komend):
Szybkie testy bez instalowania czegokolwiek:

curl -s https://twojastrona.pl/wp-json/wp/v2/posts?per_page=2 | jq .

(`jq` formatuje JSON – zainstaluj przez `brew install jq` lub `apt install jq`)

Przegladarka:
Dla prostych GET wpisz URL endpointu w pasku adresu. Zainstaluj rozszerzenie JSON Formatter, żeby dane były czytelne.

WP-CLI:
WP-CLI ma wbudowana obsługę REST API:

wp rest post list --per_page=5
wp rest post get 123

Autentykacja w REST API (Application Passwords, JWT)

Odczyt publicznych danych (posty, strony) nie wymaga autentykacji. Ale tworzenie, edycja i usuwanie – tak.

Application Passwords (wbudowane od WP 5.6):
Najprostszy sposób. Działa bez wtyczek.
1. Przejdź do Użytkownicy > Profil
2. Przewiń do sekcji Hasła aplikacji
3. Wpisz nazwę (np. Postman dev) i kliknij Dodaj
4. Skopiuj wygenerowane hasło (wyświetli się tylko raz!)
5. W zapytaniach użyj HTTP Basic Auth: username + application password

Przykład w curl:

curl -X POST https://twojastrona.pl/wp-json/wp/v2/posts \
  -u "admin:xxxx xxxx xxxx xxxx" \
  -H "Content-Type: application/json" \
  -d '{"title":"Nowy post","status":"draft","content":"Treść posta."}'

JWT (JSON Web Tokens):
Lepsze do aplikacji frontendowych (React, Next.js). Wymaga wtyczki JWT Authentication for WP REST API.
1. Zainstaluj i aktywuj wtyczkę
2. Dodaj secret key w wp-config.php
3. Wyślij POST na /wp-json/jwt-auth/v1/token z loginem i hasłem
4. Otrzymasz token – dołączaj go w nagłówku Authorization: Bearer TOKEN

JWT jest bezpieczniejsze od Application Passwords w aplikacjach klienckich, bo token wygasa po określonym czasie.

Tworzenie własnych endpointów (register_rest_route)

Domyślne endpointy nie zawsze wystarczają. Możesz stwórzyc własne.

Podstawowy przykład:
W pliku functions.php motywu lub we wtyczce:

add_action('rest_api_init', function() {
    register_rest_route('mojafirma/v1', '/kontakt', [
        'methods' => 'GET',
        'callback' => 'moj_endpoint_kontakt',
        'permission_callback' => '__return_true',
    ]);
});

function moj_endpoint_kontakt() {
    return [
        'firma' => 'KC Mobile',
        'email' => 'kontakt@kcmobile.pl',
        'telefon' => '+48 123 456 789',
    ];
}

Endpoint będzie dostępny pod: `/wp-json/mojafirma/v1/kontakt`

Endpoint z parametrami:

register_rest_route('mojafirma/v1', '/produkt/(?P<id>\d+)', [
    'methods' => 'GET',
    'callback' => function($request) {
        $id = $request->get_param('id');
        $post = get_post($id);
        return $post ? ['title' => $post->post_title] : new WP_Error('not_found', 'Nie znaleziono', ['status' => 404]);
    },
    'permission_callback' => '__return_true',
]);

Zabezpieczony endpoint (tylko zalogowani):

'permission_callback' => function() {
    return current_user_can('edit_posts');
}

Zawsze definiuj `permission_callback` – bez niego WordPress wyświetli ostrzeżenie w logach.

Zabezpieczenie REST API – ograniczanie dostępu

Domyślnie REST API jest otwarte dla wszystkich. Każdy może odczytać posty, strony, a nawet listę użytkownikow. To nie zawsze jest pożądane.

Wyłączenie REST API dla niezalogowanych:

add_filter('rest_authentication_errors', function($result) {
    if (!is_user_logged_in()) {
        return new WP_Error('rest_forbidden', 'Brak dostepu', ['status' => 401]);
    }
    return $result;
});

Ukrycie listy użytkownikow (częste zalecenie bezpieczeństwa):

add_filter('rest_endpoints', function($endpoints) {
    unset($endpoints['/wp/v2/users']);
    unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
    return $endpoints;
});

Wtyczki do zarządzania dostępem:
- Disable WP REST API – całkowite wyłączenie dla niezalogowanych
- WP REST API Controller – graficzny interfejs do włączania/wyłączania endpointów

Rate limiting:
WordPress nie ma wbudowanego rate limitingu. Możesz go dodać przez:
- Cloudflare (Rate Limiting Rules) – najłatwiejsze
- Wtyczkę bezpieczeństwa (Wordfence ma rate limiting)
- Konfigurację Nginx (limit_req_zone)

Ważne: nie wyłączaj REST API całkowicie, jeśli używasz Gutenberga – edytor blokowy komunikuje się z backendem przez REST API.

WordPress jako headless CMS (Next.js, Astro, React)

Headless WordPress to architektura, w której WordPress służy jako backend (CMS do zarządzania treścią), a frontend jest zbudowany w innej technologii – React, Next.js, Astro, Vue.

Dlaczego headless?
- Szybkość – statycznie generowane strony ładują się błyskawicznie
- Elastyczność – frontend nie jest ograniczony motywami WordPress
- Bezpieczeństwo – wp-admin nie jest wystawiony publicznie (może być na subdomenie)
- Skalowalność – frontend na CDN, backend na osobnym serwerze

Przykład z Next.js:

// pages/blog/[slug].js
export async function getStaticPaths() {
  const res = await fetch('https://cms.twojastrona.pl/wp-json/wp/v2/posts?per_page=100');
  const posts = await res.json();
  return {
    paths: posts.map(p => ({ params: { slug: p.slug } })),
    fallback: 'blocking',
  };
}

Przykład z Astro:
Astro świetnie współgra z WordPress REST API. Strona kcmobile.pl korzysta własnie z takiej architektury – dane z JSON, renderowanie statyczne, deploy na serwer.

WooCommerce REST API:
Jeśli prowadzisz sklep WooCommerce, masz dodatkowe endpointy: /wp-json/wc/v3/products, /wp-json/wc/v3/orders. Klucze API generujesz w WooCommerce > Ustawienia > Zaawansowane > REST API.

Potrzebujesz pomocy przy budowie headless WordPress? Skontaktuj się z namitworzymy strony w nowoczesnych technologiach.

Wspomniane narzędzia

Postman Insomnia WP-CLI JWT Authentication WP REST API Controller Next.js Astro Cloudflare

Potrzebujesz pomocy z WordPress?

Tworzymy i naprawiamy strony na WordPress. Optymalizacja prędkości, bezpieczeństwo, aktualizacje. 20+ lat doświadczenia.

Najczęściej zadawane pytania

Czy REST API jest włączone domyślnie w WordPress?
Tak – REST API jest wbudowane i włączone od WordPress 4.7 (grudzień 2016). Nie musisz niczego instalować ani aktywować. Sprawdź wpisując w przeglądarkę twojastrona.pl/wp-json/ – powinieneś zobaczyć dane JSON opisujące dostępne endpointy. Jeśli widzisz błąd 404, sprawdź ustawienia bezpośrednich odnośników (Ustawienia > Bezpośrednie odnasniki) – muszą być inne niż Proste.
Jak wyłączyć REST API w WordPress?
Możesz ograniczyć dostęp przez filtr rest_authentication_errors – zwracając WP_Error dla niezalogowanych użytkownikow. Całkowite wyłączenie możliwe przez wtyczkę Disable WP REST API. Pamiętaj jednak, ze Gutenberg wymaga REST API do działania – jeśli wyłączysz API całkowicie, edytor blokowy przestanie działać. Lepszym rozwiązaniem jest selektywne ukrywanie endpointów (np. /users) niż globalne wyłączenie.
Czym różni się REST API od GraphQL w WordPress?
REST API zwraca stala strukturę danych dla każdego endpointu – dostajesz wszystkie pola, nawet jeśli potrzebujesz tylko tytułu. GraphQL (przez wtyczkę WPGraphQL) pozwala zapytać dokładnie o te pola, które potrzebujesz, w jednym zapytaniu. GraphQL jest wydajniejsze przy złożonych zapytaniach, ale trudniejsze do wdrozenia. Dla prostych integracji REST API wystarczy. Dla headless frontendu GraphQL często jest lepszym wyborem.
Czy REST API spowalnia WordPress?
Samo istnienie REST API nie spowalnia strony – endpointy sa wywoływane tylko gdy ktoś wyslije zapytanie. Problem może wystąpić, gdy zewnętrzne boty skanują Twoje API generując dużo zapytań. Rozwiązanie: rate limiting przez Cloudflare lub Wordfence. Jeśli nie korzystasz z API i chcesz zminimalizować powierzchnie ataku, możesz ograniczyć dostęp filtrami PHP bez wpływu na wydajność frontendu.
Jak zabezpieczyć endpointy REST API?
Trzy poziomy zabezpieczeń: (1) ukryj wrażliwe endpointy jak /users filtrem rest_endpoints, (2) wymagaj autentykacji dla zapisu przez permission_callback w register_rest_route lub globalnie filtrem rest_authentication_errors, (3) dodaj rate limiting przez Cloudflare lub konfigurację serwera. Dla Application Passwords zawsze generuj osobne hasło per aplikacja – łatwiej odwołać dostęp bez zmiany głównego hasła.
Co to jest headless WordPress?
Headless WordPress to architektura, w której WordPress pełni role backendu (systemu zarządzania treścią), a frontend jest zbudowany w innej technologii – React, Next.js, Astro, Vue. Komunikacja odbywa się przez REST API lub GraphQL. Zalety: szybkość (statyczne strony), elastyczność (dowolny design), bezpieczeństwo (wp-admin ukryty). Wady: większa złożoność techniczna, brak podglądu na żywo, potrzeba dwóch środowisk hostingowych.
#wordpress#rest-api#headless-cms#next-js#astro#autentykacja#application-passwords#jwt#wp-json#woocommerce-api#postman
Zdjęcie autora: Krzysztof Czapnik
O autorze

Krzysztof Czapnik

Founder & Technical Lead, KC Mobile

20 lat WordPress + 12 lat WooCommerce. Specjalizuję się w technicznej stronie e-commerce: automatyzacje WooCommerce, Google Ads dla SMB, migracje sklepów i optymalizacja konwersji.

Potrzebujesz pomocy z tym tematem? Napisz – odpowiem osobiście w 24h.

Potrzebujesz pomocy?

Wolisz, żebyśmy zrobili to za Ciebie?

Oszczędź czas i uniknij błędów. Zostaw kontakt – wdrożymy to rozwiązanie profesjonalnie.

  • Wdrożenie krok po kroku przez doświadczony zespół
  • Konkretny timeline + cena dopasowana do projektu
  • 20+ lat doświadczenia
Bezpłatna wycena