Průvodce WordPress REST API

Co je WordPress REST API
REST API ekosystému WordPress je rozhraní, které umožňuje externím aplikacím komunikovat s webem na WordPressu prostřednictvím HTTP požadavků. Místo přístupu k obsahu přes frontend WordPressu nebo administraci umožňuje REST API číst, vytvářet, aktualizovat a mazat obsah programově, pomocí standardních HTTP metod (GET, POST, PUT, DELETE) a formátu JSON pro výměnu dat.
REST API je součástí WordPressu od verze 4.7 (prosinec 2016) a představuje moderní způsob interakce s WordPressem. Používá se pro mobilní aplikace, které zobrazují obsah WordPressu, JavaScriptové frontendy (React, Vue, Angular), které používají WordPress jako backend, integrace s externími službami a automatizaci správy obsahu. Editor Gutenberg, standardní editor WordPressu od verze 5.0, intenzivně využívá REST API pro všechny operace s obsahem. Pokud teprve začínáte, podívejte se na našeho průvodce instalací WordPressu.
Základy REST API
Endpointy a routy
WordPress REST API je na vašem webu dostupné pod cestou /wp-json/. Pomocí prohlížeče nebo nástroje jako cURL nebo Postman můžete k API přistupovat. Například GET požadavek na /wp-json/wp/v2/posts vrátí seznam příspěvků ve formátu JSON, /wp-json/wp/v2/pages vrátí stránky, /wp-json/wp/v2/categories vrátí kategorie, /wp-json/wp/v2/users vrátí uživatele, /wp-json/wp/v2/media vrátí mediální soubory a /wp-json/wp/v2/comments vrátí komentáře. Každý z těchto endpointů podporuje různé HTTP metody pro různé operace – GET pro čtení, POST pro vytváření, PUT/PATCH pro aktualizaci a DELETE pro mazání.
Parametry dotazu
REST API podporuje řadu parametrů pro filtrování a stránkování výsledků. Parametr per_page řídí počet výsledků na stránku (výchozí 10, max 100), page určuje stránku výsledků pro stránkování, search vyhledává obsah podle klíčového slova, orderby definuje pole pro řazení (date, title, id), order definuje směr řazení (asc nebo desc) a categories a tags filtrují podle kategorie nebo štítku. Například požadavek /wp-json/wp/v2/posts?per_page=5&categories=3&orderby=date&order=desc vrátí 5 nejnovějších příspěvků z kategorie s ID 3.
Struktura odpovědi
API vrací data ve formátu JSON. Každý objekt příspěvku obsahuje id (jedinečný identifikátor), title s vlastností rendered (titulek s HTML formátováním), content s vlastností rendered (obsah příspěvku), excerpt s vlastností rendered (úryvek), date (datum publikace ve formátu ISO 8601), slug (URL přívětivý titulek), status (publish, draft, pending), author (ID autora), categories a tags (pole ID). Hlavičky HTTP odpovědi obsahují užitečná metadata: X-WP-Total (celkový počet položek) a X-WP-TotalPages (celkový počet stránek).
Autentizace
Veřejné vs chráněné endpointy
Některé endpointy jsou veřejně dostupné bez autentizace – čtení publikovaných příspěvků, stránek, kategorií a štítků. Operace, které mění data (vytváření, aktualizace, mazání), a přístup k soukromým datům vyžadují autentizaci. WordPress REST API podporuje několik metod autentizace v závislosti na kontextu použití.
Application Passwords
Od WordPressu 5.6 jsou Application Passwords součástí jádra a představují nejjednodušší způsob autentizace externích aplikací. Application Password pro uživatele vytvoříte v Uživatelé → Profil → Application Passwords. Vygenerované heslo se používá s HTTP Basic Authentication – uživatelské jméno a aplikační heslo posíláte v hlavičce Authorization každého požadavku. Application Passwords mají výhodu v tom, že je lze odvolat jednotlivě bez změny hlavního hesla uživatele.
Autentizace JWT
JSON Web Token (JWT) je oblíbená metoda autentizace v single-page aplikacích a mobilních aplikacích. WordPress nemá vestavěnou podporu JWT, ale pluginy jako JWT Authentication for WP REST API nebo Simple JWT Login tuto funkcionalitu přidávají. Klient odešle uživatelské jméno a heslo na token endpoint, získá JWT token a poté ho s každým požadavkem posílá v hlavičce Authorization jako Bearer token. JWT tokeny mají omezenou životnost a lze je obnovit bez opětovného odeslání hesla.
OAuth 2.0
OAuth 2.0 je průmyslový standard pro autorizaci, který umožňuje třetím stranám přistupovat ke zdrojům bez sdílení hesel. WordPress podporuje OAuth prostřednictvím pluginu OAuth Server. OAuth je ideální pro aplikace, které přistupují k obsahu WordPressu jménem uživatele – uživatel autorizuje aplikaci přes přihlašovací stránku WordPressu, aplikace obdrží access token a používá ho pro volání API. Jde o nejbezpečnější metodu pro produkční aplikace.
Vytváření vlastních endpointů
Registrace REST Route
WordPress umožňuje vytvářet vlastní API endpointy pro konkrétní potřeby vaší aplikace. Použijte funkci register_rest_route() v hooku rest_api_init. Definujete namespace (např. myplugin/v1), routu (např. /featured-posts), HTTP metodu (GET, POST), callback funkci, která vrací data, a volitelnou funkci permission_callback pro řízení přístupu. Vlastní endpointy jsou užitečné pro data, která vyžadují složité dotazy, agregace nebo transformace, jež standardní endpointy nepodporují.
Permission Callback
Funkce permission callback řídí, kdo může k endpointu přistupovat. Pro veřejné endpointy použijte __return_true. Pro chráněné endpointy zkontrolujte oprávnění uživatele pomocí funkce current_user_can(). Například endpoint pro vytváření příspěvků by měl kontrolovat current_user_can('publish_posts'). Nikdy nenechávejte zápisové endpointy bez permission callbacku, protože to otevírá web zneužití.
Validace a sanitizace parametrů
Vlastní endpointy by měly definovat argumenty s validací a sanitizací. Pro každý parametr definujete required (zda je povinný), type (string, integer, boolean), validate_callback (funkce, která kontroluje platnost hodnoty) a sanitize_callback (funkce, která hodnotu před použitím očistí). WordPress nabízí vestavěné sanitizační funkce jako sanitize_text_field(), absint() a sanitize_email(). Správná validace předchází neočekávaným chybám a bezpečnostním zranitelnostem.
Headless WordPress
Koncept headless CMS
Headless WordPress je architektura, kde se WordPress používá pouze jako backend (CMS) pro správu obsahu, zatímco frontendové zobrazení běží v zcela samostatné aplikaci. WordPress REST API slouží jako most mezi backendem a frontendem. Frontend lze postavit v Reactu, Vue.js, Next.js, Nuxtu, Angularu nebo jakémkoli jiném frameworku. Výhodami jsou plná kontrola nad frontendem, lepší výkon (statické stránky místo renderování PHP ve WordPressu), možnost použít stejný obsah na webu, v mobilní aplikaci i na dalších platformách a moderní vývojářská zkušenost (hot reloading, komponentová architektura).
Next.js a WordPress
Kombinace Next.js a WordPressu je jednou z nejoblíbenějších headless implementací. Next.js poskytuje server-side rendering (SSR), generování statického webu (SSG) a inkrementální statickou regeneraci (ISR), což vede k extrémně rychlým webům. Obsah se načítá z WordPress REST API během buildu (pro SSG) nebo na vyžádání (pro SSR). Komponenta Image v Next.js automaticky optimalizuje obrázky a routovací systém mapuje WordPress slugy na stránky. Mnoho velkých webů používá tuto kombinaci pro blogové sekce, zatímco zbytek webu používá vlastní komponenty.
Výzvy headless přístupu
Headless WordPress není bez výzev. Přicházíte o šablony WordPressu a vizuální customizer – vše se musí naprogramovat ve frontendovém frameworku. Pluginy, které generují frontendový výstup (kontaktní formuláře, galerie, page buildery), v headless režimu nefungují. Funkce náhledu vyžaduje dodatečnou konfiguraci. SEO pluginy jako Yoast generují meta data, ale frontend je musí načíst a správně zobrazit. Komentáře, vyhledávání a stránkování se musí implementovat na frontendu pomocí volání API. Headless přístup vyžaduje tým se zkušenostmi s frontendovým vývojem.
Bezpečnost REST API
Omezení přístupu
Ve výchozím nastavení je WordPress REST API veřejně dostupné a odhaluje informace o uživatelích, příspěvcích a struktuře webu. U webu, který API nepoužívá, zvažte omezení přístupu. REST API můžete pro neautentizované uživatele vypnout pomocí filtru rest_authentication_errors, zablokovat konkrétní endpointy (zejména /wp/v2/users, který odhaluje uživatelská jména), nebo použít plugin jako Disable WP REST API pro selektivní vypnutí. Nikdy neblokujte REST API úplně, pokud používáte editor Gutenberg, protože ten na API závisí.
Rate Limiting
REST API bez rate limitingu lze zneužít pro brute force útoky, scraping obsahu nebo DDoS. Implementujte rate limiting na úrovni webového serveru (modul limit_req v Nginxu, mod_ratelimit v Apachi) nebo pomocí pravidel WAF. Cloudflare Rate Limiting je jednoduché řešení – omezte endpoint /wp-json/ na rozumný počet požadavků za minutu (např. 60 pro autentizované, 30 pro neautentizované uživatele).
Užitečné nástroje pro práci s REST API
- Postman: Grafický nástroj pro testování volání API s podporou všech HTTP metod, autentizace a kolekcí požadavků.
- cURL: Nástroj příkazové řádky pro HTTP požadavky – ideální pro rychlé testování a skriptování.
- Insomnia: Moderní alternativa k Postmanu s přehledným rozhraním a podporou GraphQL.
- WP-CLI: Nástroj příkazové řádky WordPressu, který interně používá REST API a umožňuje spravovat web z terminálu.
- Thunder Client: Rozšíření pro VS Code k testování API přímo z editoru.
Závěr
WordPress REST API otevírá nové možnosti využití WordPressu nad rámec tradičního blogu nebo webu. Ať už stavíte mobilní aplikaci, JavaScriptový frontend, nebo integrujete WordPress s dalšími systémy, REST API poskytuje standardizovaný a zdokumentovaný způsob přístupu k obsahu. U headless projektů nabízí kombinace WordPressu a moderního frontendového frameworku jako Next.js to nejlepší z obou světů – jednoduchou správu obsahu a špičkový výkon. U BeoHosting podporují všechny WordPress hosting plány REST API s optimalizovanou konfigurací PHP a MySQL pro rychlejší odezvy API.
BeoHosting Team
10+ let zkušeností — Specialisté na webhosting a infrastrukturu
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Naposledy aktualizováno: