Suche…


Einführung

Die WordPress-REST-API stellt API-Endpunkte für WordPress-Datentypen bereit, mit denen Entwickler mit Websites remote kommunizieren können, indem sie JSON-Objekte (JavaScript Object Notation) senden und empfangen.

Wenn Sie Inhalte an die API senden oder eine Anforderung an sie senden, wird die Antwort in JSON zurückgegeben. Auf diese Weise können Entwickler WordPress-Inhalte aus clientseitigem JavaScript oder aus externen Anwendungen erstellen, lesen und aktualisieren, auch wenn sie in anderen Sprachen als PHP geschrieben sind.

Bemerkungen

Damit dieses einfache WordPress-REST-API-Beispiel für Sie funktioniert, müssen Sie lernen, wie es ausführlicher funktioniert. Offizielle Dokumentation empfiehlt das Erlernen von:

  1. Routen / Endpunkte - Dies sind Zuordnungen einzelner HTTP-Methoden zu Routen, die als "Endpunkte" bezeichnet werden. Sie tun dies mit der Funktion register_rest_route (). Hier finden Sie weitere Informationen zu Routen und Endpunkten .

  2. Anforderungen - Die WordPress-REST-API definiert die WP_REST_Request Klasse, die zum Speichern und Abrufen von Informationen für die aktuelle Anforderung verwendet wird. WP_REST_Request Objekte werden automatisch für Sie generiert, wenn Sie eine HTTP-Anforderung an eine registrierte Route WP_REST_Request . Die in der Anfrage angegebenen Daten bestimmen, welche Antwort Sie wieder aus der API erhalten. Hier erfahren Sie mehr über die Klasse WP_REST_Request .

  3. Antworten - sind die Daten, die Sie von der API erhalten. WP_REST_Response bietet eine Möglichkeit, mit den von Endpunkten zurückgegebenen WP_REST_Response zu interagieren. In Ihrer Endpunktdefinition benennen Sie die Callback-Funktion (Antwort), um Ihre Interaktion zu bedienen. Hier erfahren Sie mehr über die Klasse WP_REST_Response .

  4. Schema - Jeder Endpunkt erfordert und stellt geringfügig andere Datenstrukturen bereit. Diese Strukturen werden im API-Schema definiert. Wenn Sie wartbare, auffindbare und leicht erweiterbare Endpunkte wünschen, wird die Verwendung des Schemas empfohlen. Hier erfahren Sie mehr über das Schema .

  5. Controller-Klassen - sie bringen alle Elemente an einem Ort zusammen. Mit einer Controller-Klasse können Sie die Registrierung von Routen und Endpunkten verwalten, Anforderungen bearbeiten, Schema verwenden und API-Antworten generieren. Sie haben bereits zwei Controller-Klassen WP_REST_Request : WP_REST_Request und WP_REST_Response . Hier erfahren Sie mehr über die Controller-Klassen

Hinweis: Einige dieser Informationen stammen aus dem offiziellen Wordpress-REST-APi-Handbuch

Vollständiges Arbeitsbeispiel

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow