20.4.2. Benutzerdefinierte Links

Wie im Kapitel zu den nützlichen Funktionen der REST-API angerissen, gibt es die Möglichkeit, Links in den Antworten zu hinterlassen. Zur Wiederholung: dies dient dazu, dem API-Benutzer aufzuzeigen, ob und welche Ressourcen noch verfügbar sind und wie diese aufgerufen werden können.

WordPress fügt einige, nützliche Links bereits automatisch an, aber Sie können natürlich auch selbst welche anhängen.

Wenn wir beim Kommentar-Beispiel bleiben, erhalten Sie beim GET-Abruf folgender URL folgende Links:

GET http://test.local/wp-json/wp/v2/comments/1

    "_links": {
        "self": [
            {
                "href": "http://test.local/wp-json/wp/v2/comments/1"
            }
        ],
        "collection": [
            {
                "href": "http://test.local/wp-json/wp/v2/comments"
            }
        ],
        "up": [
            {
                "embeddable": true,
                "post_type": "post",
                "href": "http://test.local/wp-json/wp/v2/posts/1"
            }
        ]
    }

Nehmen wir an, wir wollen eine eigene REST-Route für die Kommentar-Bewertungen bereitstellen und diesen Link ebenfalls ausgeben. Dazu können wir die Methode add_link der Klasse WP_REST_Response nutzen:

public function add_link( $rel, $href, $attributes = array() ) {
	...
}

Es gilt:

  • $rel (string)
    Die Link-Relation. Dies kann eine ausgewählte Bezeichnung von IANA sein oder eine selbst gewählte, absolute URL.
  • $href (string)
    Ziel-URL mit Platzhaltern.
  • $attributes (array)
    Weitere Argumente.

Die Methode hat keinen Rückgabewert.

Sehen wir uns ein Beispiel an:

You’re not allowed to see this content. Please log in first.

Nun erzeugt der GET Aufruf auf http://test.local/wp-json/wp/v2/comments/1 folgendes:

You’re not allowed to see this content. Please log in first.

Die Ausgabe wäre an sich korrekt, allerdings ist die URL als Schlüssel-Element (https://my-rating-plugin.com/rating) nicht sehr schön gewählt. Denken Sie daran, dass dies schwer zu verarbeiten ist. Deswegen wollen wir sie Kürzen. Dazu müssen wir allerdings die Liste der CURIE-Elemente erweitern.

Wir ergänzen das Plugin wie folgt:

You’re not allowed to see this content. Please log in first.

Eine GET-Abfrage auf folgende URL:

GET http://test.local/wp-json/wp/v2/comments/1 gibt nun folgendes aus:

You’re not allowed to see this content. Please log in first.