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ź
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 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 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 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. 20+ lat doświadczenia.
Najczęściej zadawane pytania
Czy REST API jest włączone domyślnie w WordPress?
Jak wyłączyć REST API w WordPress?
Czym różni się REST API od GraphQL w WordPress?
Czy REST API spowalnia WordPress?
Jak zabezpieczyć endpointy REST API?
Co to jest headless WordPress?
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