WordPress rest api – co to jest i jak z niego korzystać

W dzisiejszym świecie cyfrowym, gdzie integracja różnych platform i aplikacji staje się standardem, interfejsy programistyczne (API) odgrywają kluczową rolę w usprawnianiu komunikacji między systemami. WordPress, najpopularniejszy system zarządzania treścią (CMS) na świecie, również podąża za tą tendencją, oferując zaawansowane rozwiązanie w postaci WordPress REST API. Narzędzie to otworzyło zupełnie nowe możliwości dla deweloperów i właścicieli stron, pozwalając na elastyczne zarządzanie treścią i integrację z zewnętrznymi aplikacjami.

Czym jest WordPress REST API?

WordPress REST API to interfejs programistyczny aplikacji, który umożliwia komunikację między WordPressem a innymi systemami za pomocą standardu REST (Representational State Transfer). Został oficjalnie włączony do rdzenia WordPressa w wersji 4.7, choć wcześniej funkcjonował jako wtyczka. API to zestaw reguł i protokołów, które określają, w jaki sposób programy mogą komunikować się ze sobą, a REST API wykorzystuje do tego celu protokół HTTP.

REST API WordPressa pozwala na dostęp do danych przechowywanych w WordPressie (postów, stron, komentarzy, użytkowników, taksonomii i wielu innych) oraz manipulację nimi za pomocą standardowych metod HTTP, takich jak GET, POST, PUT, DELETE. Dane są przesyłane w formatach JSON lub XML, co czyni je łatwymi do przetwarzania przez różne platformy i języki programowania.

„WordPress REST API to rewolucja w sposobie, w jaki myślimy o WordPressie – nie jest to już tylko system zarządzania treścią, ale platforma aplikacyjna z pełnoprawnym interfejsem programistycznym” – Matt Mullenweg, współzałożyciel WordPressa.

Dlaczego warto korzystać z WordPress REST API?

Zastosowanie WordPress REST API przynosi liczne korzyści zarówno dla deweloperów, jak i właścicieli stron:

1. Oddzielenie frontendu od backendu

API pozwala na całkowite oddzielenie warstwy prezentacji (frontend) od warstwy logiki i danych (backend). Dzięki temu można tworzyć aplikacje internetowe wykorzystujące WordPress jako backend, ale z zupełnie innym, niestandardowym frontendem, na przykład opartym na React, Angular czy Vue.js.

2. Tworzenie aplikacji mobilnych

REST API umożliwia łatwe tworzenie natywnych aplikacji mobilnych dla iOS i Android, które mogą komunikować się z witryną WordPress i pobierać z niej dane lub je aktualizować.

3. Integracja z zewnętrznymi systemami

API ułatwia integrację WordPressa z innymi systemami, takimi jak CRM, systemy e-commerce, narzędzia analityczne czy automatyzacje marketingowe.

4. Lepsza wydajność

Dzięki możliwości pobierania tylko potrzebnych danych, aplikacje korzystające z REST API mogą działać znacznie szybciej niż tradycyjne witryny WordPress, które muszą ładować cały silnik szablonów.

5. Wielokanałowa dystrybucja treści

API umożliwia publikowanie treści na różnych platformach i w różnych formatach – na stronie internetowej, w aplikacjach mobilnych, na urządzeniach IoT, czy nawet w aplikacjach desktopowych.

Jak działa WordPress REST API?

WordPress REST API działa w oparciu o endpointy – specjalne adresy URL, które służą do komunikacji z API. Każdy endpoint odpowiada za konkretne zasoby, takie jak posty, strony, użytkownicy czy komentarze.

Podstawowy format endpointu WordPress REST API wygląda następująco:

https://example.com/wp-json/wp/v2/resource

gdzie:

  • https://example.com to adres Twojej witryny WordPress
  • /wp-json/ to bazowy URL dla API
  • /wp/v2/ wskazuje na drugą wersję API
  • /resource to typ zasobu, do którego chcesz uzyskać dostęp (np. posts, pages, users)

Przykładowe endpointy WordPress REST API:

  • /wp-json/wp/v2/posts – dostęp do wszystkich postów
  • /wp-json/wp/v2/pages – dostęp do wszystkich stron
  • /wp-json/wp/v2/users – dostęp do wszystkich użytkowników
  • /wp-json/wp/v2/categories – dostęp do wszystkich kategorii
  • /wp-json/wp/v2/tags – dostęp do wszystkich tagów

Metody HTTP w REST API

REST API wykorzystuje różne metody HTTP do wykonywania operacji na zasobach:

  • GET – pobieranie danych (np. listy postów lub pojedynczego posta)
  • POST – tworzenie nowych zasobów (np. dodawanie nowego posta)
  • PUT/PATCH – aktualizacja istniejących zasobów (np. edycja posta)
  • DELETE – usuwanie zasobów (np. usunięcie posta)

Jak korzystać z WordPress REST API?

1. Pobieranie danych za pomocą endpointów

Najprostszym sposobem korzystania z WordPress REST API jest użycie metody GET do pobierania danych. Możesz to zrobić bezpośrednio w przeglądarce, wpisując adres endpointu, lub za pomocą narzędzi takich jak Postman, cURL czy biblioteki do obsługi HTTP w Twoim ulubionym języku programowania.

Przykład pobierania wszystkich postów:

GET https://example.com/wp-json/wp/v2/posts

Możesz również filtrować wyniki, dodając parametry do zapytania:

GET https://example.com/wp-json/wp/v2/posts?per_page=5&orderby=date&order=desc

Powyższe zapytanie zwróci 5 najnowszych postów.

Przykład pobierania pojedynczego posta:

GET https://example.com/wp-json/wp/v2/posts/123

gdzie 123 to ID posta.

2. Uwierzytelnianie w WordPress REST API

Niektóre operacje, takie jak tworzenie, edycja czy usuwanie zasobów, wymagają uwierzytelnienia. WordPress REST API oferuje kilka metod uwierzytelniania:

  • Cookies – standardowa metoda uwierzytelniania dla zalogowanych użytkowników
  • OAuth 1.0a – bezpieczna metoda dla aplikacji zewnętrznych (wymaga wtyczki)
  • JWT (JSON Web Tokens) – nowoczesna metoda uwierzytelniania (wymaga wtyczki)
  • Application Passwords – funkcja wprowadzona w WordPress 5.6, umożliwiająca tworzenie haseł aplikacyjnych dla API

Przykład uwierzytelniania za pomocą Application Passwords:

  1. Przejdź do swojego profilu w panelu administracyjnym WordPress.
  2. Przewiń do sekcji „Application Passwords”.
  3. Wprowadź nazwę aplikacji i kliknij „Dodaj nowe hasło aplikacji”.
  4. Skopiuj wygenerowane hasło.

Następnie możesz użyć Basic Authentication w zapytaniach API:

curl -X POST https://example.com/wp-json/wp/v2/posts 
  -u "username:application_password" 
  -H "Content-Type: application/json" 
  -d '{"title":"Nowy post","content":"Treść posta","status":"publish"}'

3. Tworzenie, aktualizacja i usuwanie zasobów

Tworzenie nowego posta (metoda POST):

POST https://example.com/wp-json/wp/v2/posts
Content-Type: application/json

{
  "title": "Nowy post",
  "content": "Treść posta",
  "status": "publish",
  "categories": [4, 5],
  "tags": [7, 8]
}

Aktualizacja istniejącego posta (metoda PUT lub PATCH):

PUT https://example.com/wp-json/wp/v2/posts/123
Content-Type: application/json

{
  "title": "Zaktualizowany tytuł",
  "content": "Zaktualizowana treść"
}

Usuwanie posta (metoda DELETE):

DELETE https://example.com/wp-json/wp/v2/posts/123

4. Praktyczne przykłady wykorzystania WordPress REST API

Przykład: Wyświetlanie najnowszych postów za pomocą JavaScript:

fetch('https://example.com/wp-json/wp/v2/posts?per_page=5')
  .then(response => response.json())
  .then(posts => {
    let output = '<ul>';
    posts.forEach(post => {
      output += `<li><a href="${post.link}">${post.title.rendered}</a></li>`;
    });
    output += '</ul>';
    document.getElementById('recent-posts').innerHTML = output;
  })
  .catch(error => console.error('Error:', error));

Przykład: Tworzenie nowego posta za pomocą PHP:

<?php
$response = wp_remote_post(
  'https://example.com/wp-json/wp/v2/posts',
  array(
    'headers' => array(
      'Authorization' => 'Basic ' . base64_encode('username:application_password'),
      'Content-Type' => 'application/json'
    ),
    'body' => json_encode(array(
      'title' => 'Nowy post z PHP',
      'content' => 'Treść posta utworzonego przez PHP',
      'status' => 'publish'
    ))
  )
);

if (!is_wp_error($response)) {
  $body = wp_remote_retrieve_body($response);
  $data = json_decode($body);
  echo "Post został utworzony z ID: " . $data->id;
}
?>

Tworzenie niestandardowych endpointów REST API

WordPress REST API pozwala również na tworzenie własnych, niestandardowych endpointów, co jest szczególnie przydatne, gdy chcesz udostępnić niestandardowe dane lub funkcjonalności.

Rejestrowanie niestandardowego endpointu:

<?php
add_action('rest_api_init', function () {
  register_rest_route('myplugin/v1', '/latest-posts/', array(
    'methods' => 'GET',
    'callback' => 'get_latest_posts_function',
    'permission_callback' => '__return_true'
  ));
});

function get_latest_posts_function($request) {
  $args = array(
    'post_type' => 'post',
    'posts_per_page' => 5,
    'orderby' => 'date',
    'order' => 'DESC'
  );

  $posts = get_posts($args);
  $data = array();

  foreach ($posts as $post) {
    $data[] = array(
      'id' => $post->ID,
      'title' => $post->post_title,
      'excerpt' => $post->post_excerpt,
      'link' => get_permalink($post->ID)
    );
  }

  return rest_ensure_response($data);
}
?>

Ten kod rejestruje niestandardowy endpoint /wp-json/myplugin/v1/latest-posts/, który zwraca 5 najnowszych postów w uproszczonym formacie.

Zabezpieczenia WordPress REST API

REST API, choć potężne, może również stanowić potencjalny wektor ataku dla złośliwych aktorów, jeśli nie jest odpowiednio zabezpieczone. Oto kilka praktyk, które pomogą zabezpieczyć Twoje API:

1. Kontrola dostępu

Określ, które endpointy powinny być publicznie dostępne, a które wymagają uwierzytelnienia. Możesz to zrobić za pomocą funkcji permission_callback podczas rejestrowania endpointów.

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

2. Ograniczanie ujawnianych danych

Ogranicz ilość danych, które są zwracane przez API, szczególnie dla endpointów publicznych. Możesz to zrobić, rejestrując niestandardowe pola lub modyfikując istniejące.

add_filter('rest_prepare_post', function ($response, $post, $request) {
  // Usuń niepotrzebne dane z odpowiedzi
  unset($response->data['guid']);
  return $response;
}, 10, 3);

3. Ograniczanie funkcjonalności REST API

Jeśli nie korzystasz z REST API, możesz całkowicie je wyłączyć lub ograniczyć jego funkcjonalność. Istnieje wiele wtyczek, które pozwalają na precyzyjne kontrolowanie dostępu do API.

// Całkowite wyłączenie REST API (nie zalecane, jeśli korzystasz z Gutenberga)
add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');

4. Używanie HTTPS

Zawsze używaj HTTPS dla swojej witryny WordPress, aby zapewnić, że dane przesyłane przez API są szyfrowane.

Ciekawostki o WordPress REST API

  1. Historia REST API – Zanim REST API zostało włączone do rdzenia WordPressa, funkcjonowało jako wtyczka o nazwie „WP API”, która była jednym z najbardziej ekscytujących projektów w społeczności WordPress.

  2. Headless WordPress – REST API umożliwiło rozwój tak zwanego „Headless WordPress”, gdzie WordPress służy tylko jako backend (magazyn treści i logika biznesowa), a frontend jest tworzony przy użyciu nowoczesnych frameworków JavaScript.

  3. Gatsby i WordPress – Popularne rozwiązanie polega na połączeniu WordPressa z Gatsby.js, generatorem stron statycznych, co pozwala na tworzenie ultra-szybkich witryn, które nadal korzystają z WordPressa jako CMS.

  4. WooCommerce API – WooCommerce, najpopularniejsza wtyczka e-commerce dla WordPressa, również wykorzystuje REST API, umożliwiając tworzenie niestandardowych sklepów internetowych i integrację z zewnętrznymi systemami.

  5. GraphQL jako alternatywa – Obok REST API, w ekosystemie WordPressa zyskuje popularność także GraphQL, szczególnie dzięki wtyczce WPGraphQL, która oferuje bardziej elastyczny sposób zapytań o dane.

Przyszłość WordPress REST API

REST API to kluczowy element strategii rozwoju WordPressa. Z każdą kolejną wersją CMS-a, API jest rozbudowywane i ulepszane. W przyszłości możemy spodziewać się jeszcze większej integracji z edytorem bloków Gutenberg oraz rozszerzenia możliwości API o nowe funkcjonalności.

WordPressowy REST API będzie również odgrywał coraz większą rolę w architekturze mikroserwisów, gdzie WordPress może służyć jako centralne repozytorium treści dla wielu różnych aplikacji i usług.

„REST API to fundament przyszłości WordPressa. To nie tylko sposób na dostęp do danych, ale kompletne przemodelowanie sposobu, w jaki myślimy o tworzeniu aplikacji internetowych.” – Ryan McCue, główny deweloper WP REST API.

Podsumowanie

WordPress REST API to potężne narzędzie, które otwiera niezliczone możliwości dla deweloperów i właścicieli stron. Pozwala na tworzenie zaawansowanych aplikacji, integrację z zewnętrznymi systemami i elastyczne zarządzanie treścią poza tradycyjnym interfejsem WordPressa.

Niezależnie od tego, czy tworzysz aplikację mobilną, headless CMS, czy po prostu chcesz zintegrować swoją witrynę WordPress z innymi narzędziami, REST API daje Ci do tego narzędzia. Wraz z rosnącą popularnością architektury opartej na API, znajomość WordPress REST API staje się cenną umiejętnością dla każdego programisty WordPress.

Zachęcamy do eksperymentowania z API, tworzenia niestandardowych endpointów i odkrywania nowych sposobów wykorzystania WordPressa jako platformy aplikacyjnej. Dzięki REST API, WordPress ewoluuje z prostego systemu zarządzania treścią w kompleksową platformę do budowania nowoczesnych aplikacji internetowych.

Previous Article

Jak przywrócić kopię zapasową strony WordPress krok po kroku

Next Article

Audyt wydajności wordpressa - sprawdź szybkość swojej strony

Subscribe to our Newsletter

Subscribe to our email newsletter to get the latest posts delivered right to your email.
Pure inspiration, zero spam ✨