WordPress REST API to interfejs, który pozwala komunikowac sie ze strona WordPress z zewnatrz – przez HTTP, w formacie JSON. Dzieki niemu możesz pobierac posty, tworzyc nowe treści, aktualizowac dane czy budowac frontend w React lub Next.js zasilany danymi z WordPressa. API jest wbudowane od wersji 4.7 i dziala out of the box. W tym poradniku pokaze Ci jak z niego korzystac, jak tworzyc własne endpointy i jak zabezpieczyc dostep.
Krótka odpowiedź
7. Endpointy dostepne sa pod adresem twojastrona.pl/wp-json/wp/v2/ (np. /wp-json/wp/v2/posts dla postow). Do odczytu publicznych danych nie potrzebujesz autentykacji. Do zapisu uzyj Application Passwords (Uzytkownicy > Profil > Hasla 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 sluzy
REST API (Representational State Transfer) to sposob komunikacji między aplikacjami przez HTTP. WordPress używa go wewnetrznie (edytor Gutenberg komunikuje sie z backendem przez REST API) i udostepnia go na zewnatrz.
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 postow z systemu zewnetrznego
- Synchronizacja danych między kilkoma stronami WordPress
- Automatyzacja – skrypty tworzace, aktualizujace lub usuwajace treści
Jak to dziala:
Wysylasz zapytanie HTTP (GET, POST, PUT, DELETE) na okreslony adres (endpoint), a WordPress odpowiada danymi w formacie JSON.
Przyklad: `GET https://twojastrona.pl/wp-json/wp/v2/posts` zwraca liste ostatnich postow w JSON.
REST API jest fundamentem nowoczesnego WordPressa. Gutenberg, aplikacja mobilna WordPress, a nawet niektorze wtyczki – wszystko korzysta z tego API w tle.
Domyslne endpointy wp-json/wp/v2/
WordPress udostepnia zestaw wbudowanych endpointow. Oto najwazniejsze:
Treści:
- `/wp-json/wp/v2/posts` – posty (wpisy blogowe)
- `/wp-json/wp/v2/pages` – strony statyczne
- `/wp-json/wp/v2/media` – pliki mediow (obrazki, PDF)
- `/wp-json/wp/v2/comments` – komentarze
Taksonomie:
- `/wp-json/wp/v2/categories` – kategorie
- `/wp-json/wp/v2/tags` – tagi
Uzytkownicy:
- `/wp-json/wp/v2/users` – lista użytkownikow (domyslnie publiczna!)
Parametry zapytan:
- `?per_page=5` – liczba wynikow na strone
- `?page=2` – numer strony
- `?search=wordpress` – wyszukiwanie
- `?categories=3` – filtrowanie po kategorii
- `?orderby=date&order=desc` – sortowanie
- `?_embed` – dolacza powiazane dane (obrazek wyrozniajacy, autor)
Przyklad pelnego zapytania:
`GET /wp-json/wp/v2/posts?per_page=3&categories=5&_embed`
Zwroci 3 ostatnie posty z kategorii ID 5, z dolaczonymi danymi autora i obrazka.
Wolisz, żeby zrobił to specjalista?
Oszczędź czas i uniknij błędów. Wdrożymy to rozwiązanie za Ciebie – profesjonalnie i szybko.
Narzedzia do pracy z REST API
Testowanie API bezposrednio w przegladarce dziala tylko dla GET. Do pelnej pracy potrzebujesz narzedzia.
Postman (najpopularniejszy):
- Darmowy dla indywidualnych użytkownikow
- Interfejs graficzny do budowania zapytan
- Zapisujesz kolekcje endpointow, zmienne środowiskowe (np. URL strony)
- Automatyczne formatowanie JSON w odpowiedziach
Insomnia:
- Lzejsza alternatywa dla Postmana
- Open source, szybkie uruchamianie
- Obsluguje 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, zeby dane byly czytelne.
WP-CLI:
WP-CLI ma wbudowana obsluge REST API:
wp rest post list --per_page=5
wp rest post get 123Autentykacja 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 sposob. Dziala bez wtyczek.
1. Przejdz do Uzytkownicy > Profil
2. Przewin do sekcji Hasla aplikacji
3. Wpisz nazwe (np. Postman dev) i kliknij Dodaj
4. Skopiuj wygenerowane haslo (wyswietli sie tylko raz!)
5. W zapytaniach uzyj HTTP Basic Auth: username + application password
Przyklad 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 wtyczke
2. Dodaj secret key w wp-config.php
3. Wyslij POST na /wp-json/jwt-auth/v1/token z loginem i haslem
4. Otrzymasz token – dolaczaj go w naglowku Authorization: Bearer TOKEN
JWT jest bezpieczniejsze od Application Passwords w aplikacjach klienckich, bo token wygasa po okreslonym czasie.
Tworzenie własnych endpointow (register_rest_route)
Domyslne endpointy nie zawsze wystarczaja. Możesz stwórzyc własne.
Podstawowy przyklad:
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' => '[email protected]',
'telefon' => '+48 123 456 789',
];
}Endpoint będzie dostepny 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 wyswietli ostrzezenie w logach.
Zabezpieczenie REST API – ograniczanie dostepu
Domyslnie REST API jest otwarte dla wszystkich. Każdy może odczytac posty, strony, a nawet liste użytkownikow. To nie zawsze jest pozadane.
Wylaczenie 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 (czeste 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 dostepem:
- Disable WP REST API – calkowite wylaczenie dla niezalogowanych
- WP REST API Controller – graficzny interfejs do włączania/wylaczania endpointow
Rate limiting:
WordPress nie ma wbudowanego rate limitingu. Możesz go dodac przez:
- Cloudflare (Rate Limiting Rules) – najlatwiejsze
- Wtyczke bezpieczeństwa (Wordfence ma rate limiting)
- Konfiguracje Nginx (limit_req_zone)
Ważne: nie wylaczaj REST API calkowicie, jesli uzywasz Gutenberga – edytor blokowy komunikuje sie z backendem przez REST API.
WordPress jako headless CMS (Next.js, Astro, React)
Headless WordPress to architektura, w której WordPress sluzy jako backend (CMS do zarządzania trescia), a frontend jest zbudowany w innej technologii – React, Next.js, Astro, Vue.
Dlaczego headless?
- Szybkosc – statycznie generowane strony laduja sie blyskawicznie
- Elastycznosc – frontend nie jest ograniczony motywami WordPress
- Bezpieczeństwo – wp-admin nie jest wystawiony publicznie (może byc na subdomenie)
- Skalowalnosc – frontend na CDN, backend na osobnym serwerze
Przyklad 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',
};
}Przyklad z Astro:
Astro świetnie wspolgra z WordPress REST API. Strona kcmobile.pl korzysta własnie z takiej architektury – dane z JSON, renderowanie statyczne, deploy na serwer.
WooCommerce REST API:
Jesli 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 sie z nami – tworzymy strony w nowoczesnych technologiach.
Wspomniane narzędzia
Potrzebujesz pomocy z WordPress?
Tworzymy i naprawiamy strony na WordPress. Optymalizacja prędkości, bezpieczeństwo, aktualizacje. 500+ zrealizowanych projektów.
Najczęściej zadawane pytania
Czy REST API jest włączone domyslnie w WordPress?
Jak wylaczyc REST API w WordPress?
Czym różni sie REST API od GraphQL w WordPress?
Czy REST API spowalnia WordPress?
Jak zabezpieczyc endpointy REST API?
Co to jest headless WordPress?
Potrzebujesz pomocy?
Wolisz, żeby zrobił to specjalista?
Oszczędź czas i uniknij błędów. Wdrożymy to rozwiązanie za Ciebie – profesjonalnie i szybko.