Szukaj…


Wprowadzenie

Interfejs API REST WordPress zapewnia punkty końcowe API dla typów danych WordPress, które umożliwiają programistom zdalną interakcję z witrynami poprzez wysyłanie i odbieranie obiektów JSON (JavaScript Object Notation).

Gdy wysyłasz zawartość do API lub wysyłasz zapytanie do API, odpowiedź zostanie zwrócona w JSON. Umożliwia to programistom tworzenie, odczytywanie i aktualizowanie treści WordPress z JavaScript po stronie klienta lub z aplikacji zewnętrznych, nawet tych napisanych w językach innych niż PHP.

Uwagi

Aby ten prosty interfejs API WordPress REST działał dla Ciebie, musisz dowiedzieć się, jak działa on bardziej szczegółowo. Oficjalna dokumentacja zaleca poznanie:

  1. Trasy / punkty końcowe - które są mapowaniami poszczególnych metod HTTP na trasy znane jako „punkty końcowe” - robisz to za pomocą funkcji register_rest_route () , a tutaj możesz znaleźć więcej informacji na temat tras i punktów końcowych .

  2. Żądania - WordPress REST API definiuje klasę WP_REST_Request która służy do przechowywania i pobierania informacji o bieżącym żądaniu. Obiekty WP_REST_Request są generowane automatycznie za każdym razem, gdy WP_REST_Request żądanie HTTP do zarejestrowanej trasy. Dane określone w żądaniu określą, jaką odpowiedź otrzymasz z interfejsu API. Tutaj możesz dowiedzieć się więcej o klasie WP_REST_Request .

  3. Odpowiedzi - to dane, które otrzymujesz z API. WP_REST_Response zapewnia sposób interakcji z danymi odpowiedzi zwracanymi przez punkty końcowe. W definicji punktu końcowego nazywasz funkcję wywołania zwrotnego (odpowiedzi), która ma służyć interakcji. Tutaj możesz dowiedzieć się więcej o klasie WP_REST_Response .

  4. Schemat - każdy punkt końcowy wymaga i zapewnia nieco inne struktury danych, a struktury te są zdefiniowane w schemacie interfejsu API. Jeśli chcesz konserwowalne, wykrywalne i łatwo rozszerzalne punkty końcowe, zaleca się użycie schematu. Tutaj możesz dowiedzieć się więcej o schemacie .

  5. Klasy kontrolerów - łączą wszystkie elementy w jednym miejscu. Za pomocą klasy kontrolera możesz zarządzać rejestracją tras i punktów końcowych, obsługiwać żądania, wykorzystywać schemat i generować odpowiedzi API. Nauczyłeś się już o dwóch klasach kontrolerów: WP_REST_Request i WP_REST_Response . Tutaj możesz dowiedzieć się więcej o klasach kontrolerów

Uwaga: niektóre z tych informacji pochodzą z oficjalnego podręcznika REST APi dla Wordpress

Kompletny przykład działania

add_action('rest_api_init', 'my_rest_validate_endpoint' );
function my_rest_validate_endpoint() {

    // Declare our namespace
    $namespace = 'myrest/v1';

    // Register the route
    // Example URL matching this route:
    // http://yourdomain/wp-json/myrest/v1/guides/tag=europe/price=29
    register_rest_route($namespace,
                        // Using regular expressions we can initially validate the input
                        '/guides/tag=(?P<tag>[a-zA-Z0-9-]+)/price=(?P<price>[0-9]+)',
                        // We can have multiple endpoints for one route
                        array(
                            array(
                                'methods'   => 'GET',
                                'callback'  => 'my_get_guides_handler'
                            )
                        ),
                        // We can register our schema callback
                        // 'schema' => 'my_get_guide_schema',
                
        );

    // You can register another route here the same way

}


// The callback handler for the endpoint
function my_get_guides_handler(WP_REST_Request $request) {

    // Get the parameters:
    $tag = $request->get_param('tag');
    $price = $request->get_param('price');

    // Do something with the parameters
    // for instance: get matching guides from the DB into an array - $results
    // ...
    
    // Prepare the response
    $message = "We've found " . count($results) . " guides ";
    $message .= "(searching for a tag: " . $tag . ", with a price tag: " . $price . ")";

    // The response gets automatically converted into a JSON format
    return new WP_REST_Response(
        array(
            'results' => $results,
            'message' => $message,
            'status' => 'OK'
        ),
        200 );

}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow