Im vorigen Teil der Serie haben wir untersucht, wie wir mit der WP-REST-API Inhalte vom Server abrufen können. Wir haben gelernt, Inhalte für verschiedene Ressourcen abzurufen, einschließlich Posts, Post-Meta-Tags, Tags, Kategorien usw. Dies ist eine leistungsstarke Funktion, da dieser Inhalt an beliebigen Stellen innerhalb oder außerhalb von WordPress verwendet werden kann.
Wir haben auch über das gelernt OPTIONEN
fordern Sie an, die API selbst zu dokumentieren, indem Sie alle Routen, ihre Endpunkte und ihre jeweiligen Argumente auflisten. Dies verringert die Notwendigkeit, sich auf eine externe Dokumentation für die API zu verlassen, und ermöglicht, dass Änderungen ziemlich schnell erkannt werden, falls die API aktualisiert oder geändert wurde.
Nachdem wir uns diese Features angesehen haben, werden wir uns in diesem Tutorial nun auf die anderen drei Operationen von CRUD konzentrieren, d. H. Das Erstellen, Aktualisieren und Löschen von Daten mithilfe der WP REST-API.
In diesem Tutorial werden wir:
Beginnen wir mit der Analyse, welche Ressourcen die Methoden zum Erstellen, Aktualisieren und Löschen mithilfe der WP-REST-API unterstützen.
Bevor wir direkt mit der Erstellung und Aktualisierung von Daten mit der WP REST-API beginnen, müssen wir analysieren, welche Routen Erstellungs- und Aktualisierungsmethoden unterstützen. Wir überprüfen dies durch die Routen und die Methoden
Eigenschaft in ihren Endpunkten. Dies kann durch Senden eines separaten erfolgen OPTIONEN
Anfrage an individuelle Routen, aber eine bequemere Methode ist das Senden einer ERHALTEN
Anfrage an die / wp-json
Indexroute wie im vorherigen Teil der Serie.
Senden einer ERHALTEN
Anfrage an die / wp-json
route gibt ein Objekt zurück, das alle Routen und deren Endpunkte in der enthält Routen
Eigentum.
In diesen einzelnen Routen können wir prüfen, ob eine bestimmte Ressource unterstützt POST
, STELLEN
, und LÖSCHEN
Methoden. Beginnen wir mit der Analyse der Beiträge Ressource.
Das Beiträge Ressource macht Daten mit den folgenden zwei Routen verfügbar:
/ wp / v2 / posts / wp / v2 / posts / (? P[\ d] +)
Die erste Route zeigt auf die Sammlung des Postobjekts und dessen Methode
Eigenschaft ist wie folgt:
"methoden": ["GET", "POST"],
Diese Methoden
Eigenschaft zeigt, dass die / Beiträge
Route unterstützt ERHALTEN
und POST
Methoden zum Abrufen und Erstellen von Daten.
Für die / posts / (? P
Route, die auf eine einzelne zeigt Beiträge Ressource, die Methoden
Eigenschaft ist wie folgt:
"methoden": ["GET", "POST", "PUT", "PATCH", "DELETE"],
Wie im obigen Code zu sehen, ist der / posts / (? P
Route unterstützt die ERHALTEN
, POST
, STELLEN
, PATCH
, und LÖSCHEN
Methoden.
Wenn wir beide Wege untersuchen, können wir daraus schließen, dass die / Beiträge
route unterstützt das Abrufen und Erstellen von Ressourcen. Und das / posts / (? P
route unterstützt das Abrufen von Ressourcen sowie das Aktualisieren und Löschen. Obwohl es das unterstützt POST
Diese Route unterstützt keine Ressourcenerstellung, wie wir in einem Beispiel unten sehen werden.
Daher können Routen, die auf eine einzelne Ressource verweisen, nicht zum Erstellen von Inhalten verwendet werden, obwohl sie das unterstützen POST
Methode. Dies liegt daran, dass für diese Routen die POST
, STELLEN
, und PATCH
Methoden werden verwendet, um Inhalte in der WP-REST-API zu aktualisieren.
Lassen Sie uns zum Abschluss dieses Abschnitts die hier gelernten Konzepte zusammenfassen:
ERHALTEN
, POST
, und LÖSCHEN
Methoden durch Senden einer OPTIONEN
anfordern.POST
Methode.Nachdem wir verschiedene Routen analysiert haben, können wir nun mit der WP-REST-API Inhalte erstellen Beiträge Ressource.
Erstellen Sie einen Beitrag, indem Sie eine Testanforderung von Postman oder einem anderen HTTP-Client senden. Starten Sie dazu Ihren HTTP-Client und senden Sie eine POST
Anfrage an die / Beiträge
Route. Denken Sie jedoch vorher daran, dass das Erstellen, Löschen und Aktualisieren von Ressourcen als Benutzer mit authentifiziert werden muss edit_posts
Rechte. Wir werden also die grundlegende Authentifizierungsmethode verwenden, die wir im zweiten Teil dieser Serie gelernt haben.
Zunächst senden wir zu Testzwecken einen leeren Anforderungstext entlang der Anforderung:
$ POST / wp / v2 / posts
Der Server sendet eine 400 - Schlechte Anfrage Fehler, da die erforderlichen Argumente im Anforderungshauptteil fehlen. Die folgende Antwort wird vom Server zurückgegeben:
Die Antwort sagt, dass entweder Inhalt
, Titel
, oder Auszug
werden zum Erstellen eines Post-Objekts benötigt. Diese Argumente können zusammen mit der Anforderung im Anforderungstext auf eine der folgenden drei Arten gesendet werden:
Es ist nur eine Frage der Wahl, eine dieser Methoden zu verwenden, und wir werden sie später in diesem Tutorial genauer untersuchen. Aber jetzt verwenden wir die erste Methode zum Erstellen eines Posts.
Wechseln Sie zum Senden von Argumenten als JSON-Objekt in Postman Karosserie Registerkarte und wählen Sie die roh Radio knopf. Wählen Sie dann aus der Dropdown-Liste rechts die Option aus JSON (Anwendung / Json) Möglichkeit. Im Textbereich darunter können Sie dann den JSON-Body hinzufügen.
Derzeit enthält dieser JSON-Body nur eine Eigenschaft für Titel
der Post.
Senden Sie die Anfrage, indem Sie auf klicken Senden Taste. Wenn alles gut geht, gibt der Server eine 201 - erstellt Status mit dem neu erstellten Post-Objekt als Antwort.
Der Standardstatus dieses neu erstellten Beitrags ist Entwurf
. Wir können das aktualisieren Status
, sowie einige andere Eigenschaften, indem Sie eine andere senden POST
, STELLEN
, oder PATCH
anfordern. Die ID der in meinem Fall zurückgegebenen Post lautet 232
, Ich schicke eine Anfrage an den folgenden Endpunkt:
$ POST / wp / v2 / posts / 232
Der Anforderungstext zum Aktualisieren der Status
und das Inhalt
Eigenschaft sieht so aus:
"status": "publish", "content": "Dies ist der Inhalt des Beitrags"
Nach dem Senden der Anfrage sendet der Server a 200 - OK Status, was bedeutet, dass der Beitrag erfolgreich aktualisiert wurde.
Im obigen Beispiel stießen wir auf die folgenden drei Argumente, um einen Beitrag zu erstellen:
Titel
Status
Inhalt
Die vollständige Liste der unterstützten Argumente zum Erstellen eines Beitrags kann von einem einfachen Aufruf abgerufen werden OPTIONEN
Anfrage wie folgt:
$ OPTIONS / wp / v2 / posts
Wir können dann das überprüfen args
Eigentum in der POST
Methodenarray.
Nachdem wir nun gelernt haben, wie wir einen Beitrag erstellen und aktualisieren können, werfen wir einen Blick auf einige weitere Ressourcen, mit denen wir arbeiten können.
Update: Für die Arbeit mit Post- und Seitenmeta in der WP-REST-API ist jetzt ein begleitendes Plugin erforderlich, das vom WP-REST-API-Team auf GitHub verfügbar ist.
Post-Meta können erstellt werden, indem Sie eine POST
Anfrage an folgende Strecke:
/ wp / v2 / posts / (? P[\ d] +) / meta
Woher (? P
ist die ID des übergeordneten Beitrags. Ich werde die ID des Beitrags verwenden, den wir im vorherigen Abschnitt erstellt haben 232
.
Ähnlich wie beim Senden eines Anfragetextes zum Erstellen eines Post-Objekts kann ein JSON-Objekt mit zwei Eigenschaften zum Erstellen eines Post-Metas gesendet werden. Diese beiden Eigenschaften sind Schlüssel
und Wert
.
"Schlüssel": "Name", "Wert": "Bilal"
Die Werte von Schlüssel
und Wert
Eigenschaften sind Name
und Bilal
beziehungsweise.
Senden Sie die Anfrage und der Server sendet eine 201 - erstellt Statuscode, der anzeigt, dass das Post-Meta erfolgreich erstellt wurde. Das neu erstellte Post-Meta-Objekt wird ebenfalls in der Antwort zurückgegeben:
Bitte beachten Sie, dass die WP REST-API zum Zeitpunkt der Erstellung dieses Lernprogramms keine Ganzzahlwerte für das Erstellen von Post-Meta unterstützt. Wenn wir versuchen, im JSON-Objekt einen ganzzahligen Wert zum Erstellen von Post-Meta zu senden, a 400 - Schlechte Anfrage Der Statuscode wird vom Server zurückgegeben.
"Schlüssel": "Wert", "Wert": 12345
Beachten Sie die fehlenden Anführungszeichen um den Wert 12345
. Die Antwort wird wie folgt aussehen:
Alles, was Sie zusammen mit der Anfrage senden, um Post-Meta zu erstellen, sollte also im String-Format vorliegen.
In diesem Lernprogramm haben wir bisher im Anforderungshauptteil das JSON-Format zum Erstellen und Aktualisieren von Ressourcen verwendet. Lassen Sie uns einen Blick auf alle Optionen werfen, die die WP REST-API zum Erstellen und Aktualisieren von Daten bietet.
Der einfachste Weg, Daten entlang der Anforderung zu senden, ist das Senden als URL-Parameter. Folgendes berücksichtigen POST
Anfrage zum Erstellen eines Posts:
$ POST / wp / v2 / posts? Title = der + title & content = das + ist + der + inhalt
Die obige Anfrage sendet zwei Parameter für den Server an den Server Titel
und das Inhalt
der Post.
Ebenso für das Erstellen eines Post-Metas für einen Post mit einer ID von 232
, Wir verwenden das Folgende POST
anfordern:
$ POST / wp / v2 / posts / 232 / meta? Key = name & value = Bilal
Die obige Anfrage erstellt das folgende Metaobjekt:
Diese Methode ist am besten geeignet, wenn es sich bei den Parametern um kurze Zeichenfolgen handelt, wie im obigen Beispiel. Mit zunehmender Anzahl von Parametern und der Länge ihrer Werte wird es jedoch schwierig, sie als URL-Parameter zu verwalten.
Bei Verwendung dieser Methode verwenden wir Argumente als Schlüssel / Wert-Paar in einem JSON-Objekt, um sie in der Anforderung zu übergeben. Bis jetzt haben wir Postman verwendet, um Anfragen an den Server zu senden. Wir werden nun einen Blick darauf werfen, wie wir diese Methode mit HTML und jQuery implementieren können.
Betrachten Sie das folgende einfache Formular, das aus drei Feldern für die besteht Titel
, Status
, und das Inhalt
:
Wenn das obige Formular übermittelt wird, wird der folgende JavaScript-Code (jQuery) ausgeführt:
var postForm = $ ('# post-form'); var jsonData = Funktion (Formular) var arrData = form.serializeArray (), objData = ; $ .each (arrData, function (index, elem) objData [elem.name] = elem.value;); return JSON.stringify (objData); ; postForm.on ('submit', Funktion (e) e.preventDefault (); $ .ajax (url: 'http: // Ihr-dev-server / wp-json / wp / v2 / posts'), Methode: 'POST', Daten: jsonData (postForm), crossDomain: true, contentType: 'application / json', beforeSend: function (xhr) xhr.setRequestHeader ('Authorization', 'Basic username: password');, success: Funktion (Daten) Konsole.Log (Daten);, Fehler: Funktion (Fehler) Konsole.Log (Fehler);;);
Mit dem Absenden des obigen Formulars senden wir eine AJAX-Anfrage an die / wp / v2 / Beiträge
Route. Das jsonData ()
Die Methode akzeptiert eine jQuery-Instanz des HTML-Formulars und konvertiert ihre Daten in das JSON-Format. Diese JSON-Daten werden dann im verwendet Daten
Eigentum der $ .ajax ()
Methode. Außerdem setzen wir den Inhaltstyp auf Anwendung / Json
mit der Inhaltstyp
Eigentum.
Vor dem Senden der Anfrage setzen wir den Header so, dass er das enthält Genehmigung
Header für die Verwendung der grundlegenden Authentifizierungsmethode. Wir haben bereits gelernt, die grundlegende Authentifizierungsmethode im zweiten Teil dieser Serie einzurichten und anzuwenden.
Zum Schluss wird die Anfrage an den gesendet / wp / v2 / Beiträge
Route und ein neuer Beitrag wird erstellt. Dieses neu erstellte Post-Objekt wird vom Server als Antwort zurückgegeben und wir melden es einfach in der Konsole in der an Erfolg()
Methode.
Das obige Beispiel zeigt die Verwendung des JSON-Formats zum Senden von Daten entlang der Anforderung. Die Quelle dieses JSON-Objekts kann abhängig von der Architektur Ihrer Anwendung außer einem HTML-Formular alles andere sein.
Bitte beachten Sie, dass Sie zur korrekten Funktion des obigen Codes möglicherweise den Code einstellen müssen Access-Control-Allow-Header
Header-Feld, um die Genehmigung
und Inhaltstyp
Werte. Dies kann durch Hinzufügen des folgenden Codes in Ihren WordPress-Dateien erfolgen .htaccess Datei:
Headerset Access-Control-Allow-Header "Content-Type, Authorization"
Schauen wir uns nun das Senden von Daten durch HTML-Formulare an.
Die letzte Möglichkeit, Daten entlang der Anforderung zu senden, ist die Verwendung von HTML-Formularen. Diese Formulare sollten Felder mit der Name
Attribut. Das Name
Attribut dient als Argumentname wie Titel
, Status
, Inhalt
, usw. Die Werte dieser Felder dienen als Wert dieser Argumente.
Wir können dasselbe HTML-Formular verwenden, das im vorherigen Beispiel erstellt wurde, und dann den folgenden Code verwenden, um einen neuen Beitrag zu erstellen:
var postForm = $ ('# post-form'); postForm.on ('submit', Funktion (e) e.preventDefault (); $ .ajax (url: 'http: // Ihr-dev-server / wp-json / wp / v2 / posts'), Methode: 'POST', data: postForm.serialize (), crossDomain: true, beforeSend: function (xhr) xhr.setRequestHeader ('Authorization', 'Basic username: password');, Erfolg: function (data) console. Logdaten ); ); );
Der obige Code ist derselbe wie im vorherigen Beispiel, nur dass wir den Code entfernt haben jsonData ()
Methode und wir senden jetzt die Formulardaten im String-Format mit jQuery's serialisieren ()
Methode. Der obige jQuery-Code verwendet den Standardwert application / x-www-form-urlencoded
Inhaltstyp, der die Daten in Form einer riesigen Zeichenfolge sendet, wobei die Argumente durch das Argument getrennt sind &
Zeichen und ihre Werte werden mit der =
Zeichen. Dies ähnelt etwas dem Senden von Daten als URL-Parameter, außer dass keine Daten verfügbar gemacht werden. Dies ist eine effiziente Methode zum Senden von Daten, wenn die Daten nur alphanumerische Zeichen enthalten.
Um binäre (nicht alphanumerische) Daten zu senden, verwenden wir die Multipart / Formulardaten
Inhaltstyp. Diese Methode kann verwendet werden, wenn Bilder oder andere Dateien mit der WP-REST-API hochgeladen werden müssen.
Um Formulardaten in Postman zu senden, können Sie in die Karosserie Tab und dann entweder die Formulardaten oder x-www-form-urlencoded Möglichkeit.
Argumente können dann in Schlüssel / Wert-Paaren definiert werden, um die Anforderung zu senden.
Detaillierte Informationen zu den verschiedenen Formulartypen finden Sie in den W3C-Spezifikationen.
Multipart / Formulardaten
InhaltstypNun, da wir uns das angesehen haben x-www-form-urlencoded
Formulartyp, der Daten in Form einer Zeichenfolge sendet, beginnen wir mit der Erforschung eines fortgeschritteneren Formulartyps, d. h. Multipart / Formulardaten
.
Das Multipart / Formulardaten
Der Inhaltstyp wird beim Umgang mit binären Daten verwendet und kann daher zum Hochladen von Bildern oder anderen Dateitypen auf den Server verwendet werden.
Im folgenden Beispiel verwenden wir ein einfaches HTML-Formular, das aus einem besteht Eingabe [Typ = "Datei"]
und ein bisschen jQuery zum Hochladen von Bildern auf den Server mithilfe von / wp / v2 / media
Route.
Betrachten Sie das folgende HTML-Formular:
Das folgende JavaScript wird ausgeführt, wenn das obige Formular übermittelt wird:
var imageForm = $ ('# image-form'), fileInput = $ ('# file'), formData = neue FormData (); imageForm.on ('submit', Funktion (e) e.preventDefault (); formData.append ('file', fileInput [0] .files [0]); $ .ajax (url: 'http: // your-dev-server / wp-json / wp / v2 / media ', Methode:' POST ', Daten: formData, crossDomain: true, contentType: false, processData: false, beforeSend: function (xhr) xhr.setRequestHeader ( 'Autorisierung', 'Basisbenutzername: Kennwort');, Erfolg: Funktion (Daten) console.log (Daten);, Fehler: Funktion (Fehler) Konsole.log (Fehler);;) ;
Hier erhalten wir zuerst eine jQuery-Instanz des Formulars und seines Eingabefelds. Dann initialisieren wir ein neues Formulardaten
Objekt. Das Formulardaten
Die Schnittstelle bietet eine Möglichkeit zum Erstellen einer Gruppe von Formularfeldern mit Schlüssel / Wert-Paaren und verwendet dasselbe Format wie das Multipart / Formulardaten
Formular-Codierungstyp.
Wenn das Formular gesendet wird, verhindern wir die Übermittlung durch Aufrufen des .Standard verhindern()
Methode für das Ereignisobjekt. Wir fügen dann ein neues Feld an Formulardaten
Instanz mit der .anhängen ()
Methode. Das .anhängen ()
Die Methode akzeptiert zwei Argumente für die Name
und das Wert
des Feldes. Die WP-REST-API erzwingt die Name
Attribut des Dateieingabefeldes sein Datei
. Deshalb setzen wir das erste Argument Name
-sein Datei
, Für das zweite Argument übergeben wir ein Datei-Blob-Objekt, indem wir auf das Eingabeelement verweisen.
Standardmäßig werden die Daten an die übergeben Daten
Eigentum der jQuery.ajax ()
Methode wird in eine Abfragezeichenfolge verarbeitet. Da wir hier Bilddateien hochladen, möchten wir dies nicht, und zu diesem Zweck setzen wir die Prozessdaten
Eigentum an falsch
. Wir setzen auch die Inhaltstyp
Eigentum an falsch
verhindern application / x-www-form-urlencoded
als Standardinhaltstyp an den Server gesendet.
Und zum Schluss setzen wir die Genehmigung
um sich als Benutzer mit zu authentifizieren edit_posts
Privilegien.
Stellen Sie sicher, dass Sie das obige Skript von einem Server aus ausführen. Wenn alles gut geht und die Datei hochgeladen ist, gibt der Server das neu erstellte Medienobjekt zurück.
Dieses Bild kann dann als gekennzeichnetes Bild für einen Beitrag festgelegt werden.
Nachdem wir uns eingehend mit dem Erstellen und Aktualisieren von Ressourcen mithilfe der WP REST-API befasst haben, sehen wir uns an, wie wir sie löschen können.
Das Löschen von Daten mit der WP-REST-API ist so einfach wie das Senden von a LÖSCHEN
Anfrage an eine bestimmte Ressource.
Wenn wir einen Beitrag mit einer ID löschen müssen 10
, wir senden folgendes LÖSCHEN
anfordern:
$ DELETE / wp / v2 / posts / 10
Dadurch wird der Beitrag in den Papierkorb verschoben, aber nicht dauerhaft gelöscht. Um ein Post dauerhaft zu löschen, verwenden wir die Macht
Streit:
$ DELETE / wp / v2 / posts / 10? Force = true
Notiere dass der Macht
Ein Argument ist erforderlich, wenn eine Ressource gelöscht wird, die den Papierkorb nicht unterstützt. Beispiele für solche Ressourcen sind Post-Meta und -Medien.
Nun schließen wir den aktuellen Teil der Serie ab.
In diesem ausführlichen Lernprogramm wurde das Erstellen, Aktualisieren und Löschen verschiedener Arten von Ressourcen mithilfe der WP-REST-API untersucht. Wir haben verschiedene Möglichkeiten kennengelernt, um Daten entlang der Anforderung zu senden, einschließlich Senden von Daten als URL-Parameter, im JSON-Format und durch Verwendung von Formularen. Am Ende des Tutorials haben wir erfahren, wie Sie Ressourcen löschen, indem Sie a LÖSCHEN
anfordern.
Im nächsten und letzten Teil der Serie erfahren Sie mehr über die interne Struktur der WP REST-API und ihrer Klassen. Wir werden auch lernen, die API zu erweitern, um Serverantworten zu ändern. Wir sehen uns im nächsten Teil der Serie…