Sök…


Introduktion

WordPress REST API tillhandahåller API-slutpunkter för WordPress-datatyper som gör det möjligt för utvecklare att interagera med webbplatser på distans genom att skicka och ta emot JSON-objekt (JavaScript Object Notation).

När du skickar innehåll till eller gör en begäran till API kommer svaret att returneras i JSON. Detta gör det möjligt för utvecklare att skapa, läsa och uppdatera WordPress-innehåll från JavaScript på klientsidan eller från externa applikationer, även de som är skrivna på andra språk än PHP.

Anmärkningar

För att få detta WordPress REST API enkla exempel för att fungera för dig, måste du lära dig hur det fungerar mer detaljerat. Officiell dokumentation rekommenderar att lära sig om:

  1. Rutter / slutpunkter - som är kartläggningar av enskilda HTTP-metoder till rutter kända som "slutpunkter" - du gör det med funktionen register_rest_route () , och här kan du hitta mer om rutter och slutpunkter .

  2. Begäran - WordPress REST API definierar WP_REST_Request klass som används för att lagra och hämta information för den aktuella begäran. WP_REST_Request objekt genereras automatiskt åt dig när du gör en HTTP-begäran till en registrerad rutt. Uppgifterna som anges i begäran avgör vilket svar du får ut ur API: n. Här kan du lära dig mer om klassen WP_REST_Request .

  3. Svar - är de data du får tillbaka från API: n. WP_REST_Response ger ett sätt att interagera med svardata som returneras av slutpunkter. I din slutpunktsdefinition namnger du callback-funktionen (svar) för att tjäna din interaktion. Här kan du lära dig mer om klassen WP_REST_Response .

  4. Schema - Varje slutpunkt kräver och tillhandahåller något olika datastrukturer, och dessa strukturer definieras i API-schemat. Om du vill ha underhållbara, upptäckbara och lätt utdragbara slutpunkter rekommenderas att du använder schemat. Här kan du lära dig mer om schemat .

  5. Controller Classes - de förenar alla element på en enda plats. Med en kontrollerklass kan du hantera registreringen av rutter och slutpunkter, hantera förfrågningar, använda scheman och generera API-svar. Du har redan lärt dig två kontrollklasser: WP_REST_Request och WP_REST_Response . Här kan du lära dig mer om Controller Classes

Obs: En del av denna information är hämtad från den officiella Wordpress REST APi-handboken

Komplett fungerande exempel

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow