Košík je prázdný

Wordpress REST API poskytuje vývojářům mocný nástroj pro práci s WordPressem na dálku pomocí HTTP požadavků. Přestože standardně podporuje základní typy obsahu jako příspěvky, stránky a média, mnohdy je potřeba API rozšířit o vlastní datové typy a endpointy, aby lépe sloužilo specifickým potřebám projektu. V tomto článku se dozvíte, jak na to.

1. Definice vlastního datového typu

Prvním krokem je vytvoření vlastního datového typu (Custom Post Type - CPT), pokud již není definován. To lze provést pomocí funkce register_post_type() ve vašem pluginu nebo tématu. Při registraci je klíčové nastavit argument show_in_rest na true, aby byl nový datový typ dostupný v REST API.

2. Přidání vlastního endpointu

Pro vytvoření nového endpointu využijeme hook rest_api_init a funkci register_rest_route(). Tato funkce umožňuje definovat metodu (GET, POST, atd.), cestu k endpointu a callback funkci, která se má vykonat při zavolání endpointu.

add_action('rest_api_init', function () {
    register_rest_route('mujplugin/v1', '/mojedata/', array(
        'methods' => 'GET',
        'callback' => 'moje_funkce_zpracovani',
    ));
});

3. Zpracování požadavků

V callback funkci moje_funkce_zpracovani můžete zpracovat požadavek a vrátit odpovídající data. Je možné přistupovat k globálním proměnným, vlastním databázovým tabulkám nebo jakýmkoli jiným zdrojům potřebným pro generování odpovědi.

4. Autentizace a oprávnění

Pro zabezpečení přístupu k vlastním endpointům je možné využít různé metody autentizace, například Basic Auth nebo OAuth. K ověření oprávnění uživatele můžete v callback funkci použít funkce jako current_user_can().

5. Testování a ladění

Po implementaci je důležité endpointy řádně otestovat. Můžete využít nástroje jako Postman nebo cURL pro odesílání HTTP požadavků a ověření správné funkčnosti vašich endpointů.

Rozšíření WP REST API o vlastní datové typy a endpointy otevírá dveře k pokročilým integracím a funkcionalitám vašich WordPress projektů. S trochou kódu můžete výrazně zvýšit flexibilitu a možnosti vašeho webu.