Zoeken…


Invoering

De WordPress REST API biedt API-eindpunten voor WordPress-gegevenstypen waarmee ontwikkelaars op afstand kunnen communiceren met sites door JSON-objecten (JavaScript Object Notation) te verzenden en ontvangen.

Wanneer u inhoud verzendt naar of een verzoek indient voor de API, wordt het antwoord geretourneerd in JSON. Hiermee kunnen ontwikkelaars WordPress-inhoud maken, lezen en bijwerken vanuit client-side JavaScript of externe applicaties, zelfs die geschreven in talen buiten PHP.

Opmerkingen

Om dit eenvoudige WordPress REST API-voorbeeld voor u te laten werken, moet u leren hoe het meer gedetailleerd werkt. Officiële documentatie beveelt aan om te leren over:

  1. Routes / Endpoints - dit zijn toewijzingen van afzonderlijke HTTP-methoden aan routes die bekend staan als "endpoints" - u doet dit met de functie register_rest_route () , en hier kunt u meer informatie vinden over Routes en Endpoints .

  2. Verzoeken - WordPress REST API definieert de klasse WP_REST_Request die wordt gebruikt om informatie voor het huidige verzoek op te slaan en op te halen. WP_REST_Request objecten worden automatisch voor u gegenereerd wanneer u een HTTP-aanvraag doet voor een geregistreerde route. De gegevens die in de aanvraag zijn opgegeven, bepalen welk antwoord u uit de API krijgt. Hier vindt u meer informatie over de klasse WP_REST_Request .

  3. Antwoorden - zijn de gegevens die u terugkrijgt van de API. De WP_REST_Response biedt een manier om te communiceren met de responsgegevens die door eindpunten worden geretourneerd. In uw eindpuntdefinitie noemt u de callback-functie (respons) om uw interactie te dienen. Hier vindt u meer informatie over de klasse WP_REST_Response .

  4. Schema - Elk eindpunt vereist en biedt enigszins verschillende datastructuren en die structuren worden gedefinieerd in het API-schema. Als u onderhoudbare, vindbare en gemakkelijk uitbreidbare eindpunten wilt, is het raadzaam om het schema te gebruiken. Hier kunt u meer informatie vinden over het schema .

  5. Controller Classes - ze brengen alle elementen op één plek samen. Met een controllerklasse kunt u de registratie van routes en eindpunten beheren, aanvragen afhandelen, een schema gebruiken en API-reacties genereren. Je hebt al kennis gemaakt met twee controller-klassen: WP_REST_Request en WP_REST_Response . Hier kunt u meer leren over de Controller Classes

Opmerking: sommige van deze informatie is afkomstig uit het officiële Wordpress REST APi-handboek

Volledig werkvoorbeeld

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow