WordPress REST API — co to jest, jak działa i jak z niego korzystać z przykładami

WordPress REST API — co to jest, jak działa i jak z niego korzystać z przykładami
WordPress REST API pozwala komunikować się z WordPressem przez HTTP — pobierać wpisy, tworzyć strony, zarządzać użytkownikami z zewnętrznych aplikacji. Pokazuję jak działa, endpointy, autentykację i praktyczne przykłady z cURL i JavaScript.

WordPress REST API to interfejs, który pozwala komunikować się z WordPressem przez żądania HTTP — bez logowania do panelu wp-admin. Możesz pobierać wpisy (GET), tworzyć nowe (POST), edytować (PUT) i usuwać (DELETE) — z poziomu przeglądarki, terminala (cURL), JavaScript, Pythona, aplikacji mobilnej lub dowolnego innego narzędzia, które potrafi wysłać żądanie HTTP.

REST API zamienia WordPressa z „CMS z panelem administracyjnym” w headless CMS — backend dostarczający dane w formacie JSON, z którego frontend (React, Vue, Next.js, aplikacja mobilna) je pobiera i wyświetla. W tym poradniku pokazuję jak REST API działa, jakie endpointy są dostępne i jak z nich korzystać w praktyce.

Co to jest REST API — szybkie wyjaśnienie

REST (Representational State Transfer) to styl architektury API, w którym:

  • Komunikacja odbywa się przez HTTP (te same metody co przeglądarka: GET, POST, PUT, DELETE)
  • Dane są w formacie JSON (lekki, czytelny dla ludzi i maszyn)
  • Każdy zasób ma swój URL (endpoint) — np. /wp-json/wp/v2/posts = wszystkie wpisy
  • API jest bezstanowe (stateless) — każde żądanie jest niezależne, serwer nie pamięta poprzednich

API (Application Programming Interface) to „umowa” między dwoma programami — „wyślij mi żądanie w tym formacie, a odpowiem Ci danymi w tym formacie”. REST API WordPressa mówi: „wyślij GET na /wp-json/wp/v2/posts, a dostaniesz listę wpisów w JSON”.

Jak uzyskać dostęp do REST API

WordPress REST API jest włączony domyślnie od WordPress 4.7 (2016). Nie musisz nic instalować. Otwórz przeglądarkę i wejdź na:

https://twojadomena.pl/wp-json/wp/v2/posts

Zobaczysz JSON z listą ostatnich wpisów — tytuły, treści, daty, autorzy, kategorie. To jest REST API w akcji — przeglądarka wysłała GET, WordPress odpowiedział JSON-em.

Sprawdź, czy API działa

https://twojadomena.pl/wp-json/

Zwraca listę wszystkich dostępnych endpointów (namespaces). Jeżeli widzisz JSON — API działa. Jeżeli 404 — sprawdź permalinki (Ustawienia → Bezpośrednie odnośniki → zapisz) lub czy wtyczka bezpieczeństwa nie blokuje REST API.

Najważniejsze endpointy

Endpoint Metoda Co robi
/wp-json/wp/v2/posts GET Lista wpisów
/wp-json/wp/v2/posts/123 GET Pojedynczy wpis (ID=123)
/wp-json/wp/v2/posts POST Utwórz nowy wpis (wymaga auth)
/wp-json/wp/v2/posts/123 PUT Edytuj wpis (wymaga auth)
/wp-json/wp/v2/posts/123 DELETE Usuń wpis (wymaga auth)
/wp-json/wp/v2/pages GET Lista stron
/wp-json/wp/v2/categories GET Lista kategorii
/wp-json/wp/v2/tags GET Lista tagów
/wp-json/wp/v2/media GET Lista mediów (obrazki, pliki)
/wp-json/wp/v2/users GET Lista użytkowników
/wp-json/wp/v2/comments GET Lista komentarzy
/wp-json/wp/v2/search?search=query GET Wyszukiwanie

Pobieranie danych — GET z przykładami

Lista wpisów (ostatnie 10)

curl https://twojadomena.pl/wp-json/wp/v2/posts

Domyślnie zwraca 10 wpisów. Parametry filtrowania:

# 20 wpisów
/wp-json/wp/v2/posts?per_page=20

# Wpisy z kategorii 16 (SEO)
/wp-json/wp/v2/posts?categories=16

# Wpisy od autora 1
/wp-json/wp/v2/posts?author=1

# Szukaj frazy
/wp-json/wp/v2/posts?search=wordpress

# Sortuj po dacie (najnowsze)
/wp-json/wp/v2/posts?orderby=date&order=desc

# Tylko konkretne pola (szybciej)
/wp-json/wp/v2/posts?_fields=id,title,link,date

# Strona 2 wyników (paginacja)
/wp-json/wp/v2/posts?page=2&per_page=10

Pojedynczy wpis

curl https://twojadomena.pl/wp-json/wp/v2/posts/3597

Zwraca pełne dane wpisu: title, content (HTML), excerpt, date, author, categories, tags, featured_media, slug, status, meta.

Z JavaScript (fetch)

const response = await fetch('https://twojadomena.pl/wp-json/wp/v2/posts?per_page=5&_fields=id,title,link');
const posts = await response.json();
posts.forEach(post => {
  console.log(post.title.rendered, post.link);
});

Tworzenie i edycja — POST/PUT z autentykacją

Operacje zapisu (tworzenie, edycja, usuwanie) wymagają autentykacji — API musi wiedzieć, że masz uprawnienia. WordPress obsługuje kilka metod:

Application Passwords (zalecane)

Od WordPress 5.6: w profilu użytkownika (wp-admin → Użytkownicy → Twój profil) generujesz Application Password — jednorazowy token do API. Używasz go z Basic Auth:

curl -X POST https://twojadomena.pl/wp-json/wp/v2/posts \
  -u "login:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Nowy wpis z API",
    "content": "<p>Treść wpisu utworzonego przez REST API.</p>",
    "status": "publish",
    "categories": [16]
  }'

Odpowiedź: JSON z pełnymi danymi nowo utworzonego wpisu (ID, URL, data, itp.).

Edycja istniejącego wpisu

curl -X PUT https://twojadomena.pl/wp-json/wp/v2/posts/3597 \
  -u "login:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -H "Content-Type: application/json" \
  -d '{"title": "Zmieniony tytuł"}'

Usunięcie wpisu

curl -X DELETE https://twojadomena.pl/wp-json/wp/v2/posts/3597 \
  -u "login:xxxx xxxx xxxx xxxx xxxx xxxx"

Domyślnie: przenosi do kosza. Żeby usunąć trwale: dodaj ?force=true.

Praktyczne zastosowania REST API

1. Headless WordPress

WordPress jako backend (CMS do zarządzania treścią) + frontend w React/Vue/Next.js. Redaktor pisze w wp-admin, frontend pobiera dane z REST API i renderuje stronę. Zalety: szybszy frontend (SPA/SSG), pełna swoboda designu, WordPress robi to, co umie najlepiej (zarządzanie treścią).

2. Aplikacja mobilna

Aplikacja na iOS/Android pobiera wpisy, produkty i dane z WordPress REST API. Przykład: aplikacja newsowa, która wyświetla artykuły z bloga WordPress.

3. Automatyzacja publikacji

Skrypt (Node.js, Python, Bash) automatycznie tworzy wpisy — np. nasz publish-article.mjs używa REST API do publikowania artykułów na seomantyczny.pl bez logowania do wp-admin.

4. Integracja z innymi systemami

CRM tworzy stronę klienta w WordPress po zamknięciu dealu. ERP synchronizuje produkty WooCommerce. CI/CD pipeline aktualizuje stronę po deploymencie. Wszystko przez REST API.

5. Wyświetlanie treści WordPress na innej stronie

Masz blog na WordPress i stronę główną na innej platformie (Webflow, custom HTML)? JavaScript na stronie głównej pobiera ostatnie wpisy z REST API WordPressa i wyświetla je jako kafelki „Aktualności z bloga” — bez iframe, bez duplikacji treści.

Bezpieczeństwo REST API

Kto może czytać (GET)?

Domyślnie: każdy. Publiczne endpointy (posts, pages, categories, tags) są dostępne bez autentykacji. To celowe — REST API zastępuje tradycyjne metody pobierania danych (RSS, XML-RPC) i umożliwia headless WordPress.

Kto może pisać (POST/PUT/DELETE)?

Tylko zaautentyzowani użytkownicy z odpowiednimi uprawnieniami (Administrator, Editor, Author — zależy od endpointu). Bez Application Password lub innej metody auth: każda próba zapisu zwraca 401 Unauthorized.

Czy wyłączyć REST API?

Niektóre wtyczki bezpieczeństwa (iThemes, Wordfence) proponują wyłączenie REST API „dla bezpieczeństwa”. Nie rób tego — wiele wtyczek (Gutenberg, Jetpack, WooCommerce, Contact Form 7, Yoast) korzysta z REST API do działania. Wyłączenie = zepsute wtyczki. Zamiast tego: ogranicz dostęp do wrażliwych endpointów (np. /users) dla niezalogowanych — wtyczka „Disable REST API” pozwala wybrać, co blokować.

Custom Endpoints — własne endpointy

Możesz dodać własne endpointy do REST API WordPress. Przykład: endpoint /wp-json/myplugin/v1/stats zwracający statystyki:

// W functions.php lub wtyczce:
add_action('rest_api_init', function() {
  register_rest_route('myplugin/v1', '/stats', [
    'methods' => 'GET',
    'callback' => function() {
      return [
        'posts' => wp_count_posts()->publish,
        'pages' => wp_count_posts('page')->publish,
        'comments' => wp_count_comments()->approved,
      ];
    },
    'permission_callback' => '__return_true', // publiczny
  ]);
});

Teraz: GET /wp-json/myplugin/v1/stats zwraca: {"posts": 66, "pages": 12, "comments": 340}.

WooCommerce REST API

WooCommerce dodaje własne endpointy pod /wp-json/wc/v3/:

  • /wc/v3/products — lista produktów
  • /wc/v3/orders — lista zamówień
  • /wc/v3/customers — lista klientów
  • /wc/v3/coupons — kupony
  • /wc/v3/reports — raporty sprzedaży

Autentykacja WooCommerce: osobne klucze API (WooCommerce → Ustawienia → Zaawansowane → REST API → Dodaj klucz). Nie Application Passwords — WooCommerce ma własny system kluczy.

Najczęściej zadawane pytania

Czy REST API spowalnia stronę?

Nie — REST API nie jest „włączone” w sensie, że coś działa w tle. Endpointy odpowiadają tylko gdy ktoś do nich wyśle żądanie. Jeśli nikt nie odpytuje API — zero obciążenia. Gutenberg i wtyczki używają REST API do komunikacji z backendem (zamiast starego admin-ajax.php), co jest szybsze niż stare rozwiązanie.

REST API vs WP-CLI — co do czego?

REST API: komunikacja przez HTTP (z dowolnego miejsca — przeglądarka, aplikacja, skrypt). WP-CLI: wiersz poleceń na serwerze (wymagany SSH). REST API: zdalne, przez internet. WP-CLI: lokalne, na serwerze. Oba mogą tworzyć wpisy, zarządzać użytkownikami — ale innym kanałem.

REST API vs XML-RPC — co lepsze?

REST API jest następcą XML-RPC — nowocześniejszy, bezpieczniejszy, z JSON zamiast XML. XML-RPC powinien być wyłączony (wektor ataków brute force). REST API jest standardem od WP 4.7. Nie ma powodu, żeby używać XML-RPC w 2026 roku.

Jak ograniczyć publiczny dostęp do REST API?

Wtyczka Disable REST API — pozwala wybrać, które endpointy są publiczne (np. posts — tak), a które wymagają logowania (np. users — tak). Alternatywnie: custom code w functions.php z filtrem rest_authentication_errors.

Podsumowanie

WordPress REST API zamienia WordPressa w backend dostarczający dane przez HTTP/JSON — umożliwia headless WordPress, aplikacje mobilne, automatyzację publikacji i integrację z dowolnym systemem. Endpointy są włączone domyślnie, publiczne GET-y (wpisy, strony, kategorie) nie wymagają autentykacji. Do zapisu: Application Passwords + Basic Auth. Do WooCommerce: osobne klucze API. I najważniejsze: nie wyłączaj REST API „dla bezpieczeństwa” — Gutenberg, WooCommerce i dziesiątki wtyczek go potrzebują.

Picture of Tomasz Zieliński
Tomasz Zieliński

Tomasz zajmuje się tematyką SEO, sztucznej inteligencji i automatyzacji pracy w marketingu internetowym. W swoich artykułach analizuje zmiany w algorytmach wyszukiwarek, rozwój narzędzi AI oraz nowe sposoby tworzenia i optymalizacji treści. Interesuje go przede wszystkim to, jak technologia wpływa na codzienną pracę specjalistów SEO, marketerów i twórców internetowych.

Facebook
Twitter
LinkedIn
Pinterest

Najnowsze Wpisy

Śledź nas