În partea anterioară a seriei, am analizat modul în care putem folosi API-ul WP REST pentru a prelua conținut de pe server. Am învățat să recuperăm conținut pentru diferite resurse, inclusiv postări, post meta, etichete, categorii etc. Aceasta este o caracteristică puternică deoarece acest conținut poate fi folosit oriunde în sau în afara WordPress.
De asemenea, am aflat despre OPȚIUNI
solicitați ca autocodurile API să fie listate pe toate rutele, punctele finale și argumentele respective. Acest lucru diminuează necesitatea de a se baza pe o documentație externă pentru API și permite ca modificările să fie descoperite destul de rapid în cazul în care API-ul a fost actualizat sau schimbat.
După examinarea acestor caracteristici, în tutorialul actual vom concentra acum atenția asupra celorlalte trei operații ale CRUD, adică crearea, actualizarea și ștergerea datelor utilizând API-ul WP REST.
În acest tutorial, vom:
Deci, să începem prin analizarea resurselor care susțin metodele de creare, actualizare și ștergere folosind API-ul WP REST.
Înainte de a ne scufunda direct în crearea și actualizarea datelor cu WP REST API, trebuie să analizăm ce rute susțin metodele de creare și actualizare. Facem acest lucru prin verificarea rutelor și a rutelor metode
proprietăți în obiectivele lor. Acest lucru se poate face prin trimiterea unui mesaj separat OPȚIUNI
cererea pe rute individuale, dar o modalitate mai convenabilă este de a trimite o OBȚINE
cererea către / Wp-json
index, așa cum am făcut în partea anterioară a seriei.
Trimiterea a OBȚINE
cererea către / Wp-json
ruta returnează un obiect care conține toate rutele și obiectivele lor în rute
proprietate.
În aceste rute individuale putem verifica dacă o anumită resursă acceptă POST
, A PUNE
, și ȘTERGE
metode. Să începem prin analizarea lui Mesaje resursă.
Mesaje resursă prezintă date cu următoarele două rute:
/ wp / v2 / posturi / wp / v2 / posturi / (? P[\ D] +)
Prima rută indică colectarea obiectului post și a lui metodă
proprietatea este după cum urmează:
"metode": ["GET", "POST"],
Acest metode
proprietate arată că / posturi
suportul rutei OBȚINE
și POST
metodele de recuperare și de creare a datelor.
Pentru / mesaje / (? P
care indică un singur punct Mesaje resursă, metode
proprietatea este după cum urmează:
"metode": ["GET", "POST", "PUT", "PATCH", "DELETE"],
După cum se poate observa în codul de mai sus, / mesaje / (? P
rută acceptă OBȚINE
, POST
, A PUNE
, PLASTURE
, și ȘTERGE
metode.
Prin examinarea ambelor rute de mai sus, putem concluziona că / posturi
rută sprijină recuperarea și crearea resurselor. Si / mesaje / (? P
traseul acceptă recuperarea resurselor, precum și actualizarea și ștergerea. Deși nu suportă POST
, această rută nu suportă crearea de resurse, așa cum vom vedea într-un exemplu de mai jos.
Prin urmare, rutele care indică o singură resursă nu pot fi folosite pentru a crea conținut, deși suportă POST
metodă. Acest lucru se datorează faptului că, pentru aceste rute, POST
, A PUNE
, și PLASTURE
metodele sunt utilizate pentru a actualiza conținutul în WP REST API.
Pentru a încheia această secțiune, să rezumăm conceptele pe care le-am învățat aici:
OBȚINE
, POST
, și ȘTERGE
prin trimiterea unui mesaj OPȚIUNI
cerere.POST
metodă.După ce am analizat diferite rute, suntem gata să creăm conținut utilizând API-ul WP REST și vom începe prin a explora Mesaje resursă.
Să creăm o postare prin trimiterea unei solicitări de testare de la Postman sau de la orice alt client HTTP. Pentru a face acest lucru, trageți-vă clientul HTTP și trimiteți-l POST
cererea către / posturi
traseu. Dar, înainte de asta, rețineți că crearea de resurse, ștergerea și actualizarea necesită autentificare ca utilizator edit_posts
drepturi. Deci, vom folosi metoda de autentificare de bază pe care am învățat-o în a doua parte a acestei serii.
Inițial, trimitem un corp de solicitare gol de-a lungul cererii în scopuri de testare:
$ POST / wp / v2 / postări
Serverul va returna a 400 - Cerere rea deoarece au lipsit argumentele necesare în organismul de solicitare. Următorul răspuns va fi returnat de server:
Răspunsul afirmă că oricare dintre acestea conţinut
, titlu
, sau extras
sunt necesare pentru crearea unui obiect post. Aceste argumente pot fi transmise de-a lungul cererii în organismul de solicitare în una din următoarele trei moduri:
Este doar o chestiune de alegere să folosiți oricare dintre aceste metode și vom examina mai îndeaproape mai târziu în acest tutorial. Dar să folosim acum prima metodă pentru crearea unui post.
Pentru a trimite argumentele ca obiect JSON în Postman, comutați la Corp și selectați brut buton de radio. Apoi, din meniul derulant din partea dreaptă, selectați JSON (aplicație / json) opțiune. În zona de text de mai jos, puteți adăuga corpul JSON.
În prezent, acest organism JSON deține doar o singură proprietate pentru titlu
a postului.
Trimiteți cererea dând clic pe Trimite buton. Dacă totul merge bine, serverul va returna a 201 - Creat cu noul obiect postat ca răspuns.
Starea implicită a postului nou creat este proiect
. Putem actualiza stare
, precum și alte proprietăți, prin trimiterea unui altul POST
, A PUNE
, sau PLASTURE
cerere. ID-ul postului returnat în cazul meu este 232
, așa că voi trimite o cerere la următorul punct final:
$ POST / wp / v2 / posturi / 232
Organismul de solicitare pentru actualizarea stare
si conţinut
proprietatea arată astfel:
"status": "publish", "content": "Acesta este conținutul mesajului"
După trimiterea cererii, serverul va returna a - OK statut, ceea ce înseamnă că postul a fost actualizat cu succes.
În exemplul de mai sus, am descoperit următoarele trei argumente pentru a crea o postare:
titlu
stare
conţinut
Lista completă a argumentelor acceptate pentru crearea unei postări poate fi extrasă printr-o simplă OPȚIUNI
cereți după cum urmează:
$ OPTIONS / wp / v2 / postări
Putem apoi verifica args
proprietate în POST
matrice de metode.
Acum, că am învățat cum putem crea și actualiza un post, să aruncăm o privire la mai multe resurse cu care putem lucra.
Actualizare: Lucrul cu postul și pagina meta din WP REST API necesită acum un plugin de companie disponibil pe GitHub de echipa WP REST API.
Mesajul post poate fi creat prin trimiterea unui mesaj POST
solicitați următoarea rută:
/ wp / v2 / mesaje / (? P[\ D] +) / meta
Unde (? P
este ID-ul postului părinte. Voi folosi id-ul postului pe care l-am creat în secțiunea anterioară, care este 232
.
În mod similar cu modul în care trimitem un organism de solicitare pentru a crea un obiect post, un obiect JSON cuprinzând două proprietăți poate fi trimis pentru a crea o postare meta. Aceste două proprietăți sunt cheie
și valoare
.
"cheie": "nume", "valoare": "Bilal"
Valorile cheie
și valoare
proprietățile sunt Nume
și Bilal
respectiv.
Trimiteți cererea și serverul va returna a 201 - Creat cod de stare, care arată că post-meta a fost creată cu succes. Obiectul post meta nou creat va fi, de asemenea, returnat în răspuns:
Rețineți că la scrierea acestui tutorial API-ul WP REST nu acceptă valori întregi pentru crearea post-meta. Dacă încercăm să trimitem o valoare întregă în obiectul JSON pentru a crea post meta, a 400 - Cerere rea codul de stare va fi returnat de server.
"cheie": "valoare", "valoare": 12345
Observați ghilimele lipsă din jurul valorii 12345
. Răspunsul trimis va fi după cum urmează:
Deci, tot ce trimiteți de-a lungul cererii de a crea post meta ar trebui să fie în format de șir.
Până acum, în acest tutorial, am folosit formatul JSON în corpul solicitării pentru a crea și actualiza resurse. Să aruncăm o privire asupra tuturor opțiunilor pe care WP REST API le oferă pentru crearea și actualizarea datelor.
Cea mai ușoară modalitate de a trimite date de-a lungul cererii este să o trimiteți ca parametri URL. Luați în considerare următoarele POST
cererea pentru crearea unei postări:
$ POST / wp / v2 / posts? Title = + titlul și conținutul = acest + este + conținutul +
Cererea de mai sus trimite doi parametri pe server pentru titlu
si conţinut
a postului.
În mod similar, pentru a crea post meta pentru un post care are un ID de 232
, folosim următoarele POST
cerere:
$ POST / wp / v2 / posts / 232 / meta? Cheie = nume & valoare = Bilal
Cererea de mai sus va crea următorul obiect meta:
Această metodă este cea mai potrivită atunci când parametrii sunt șiruri scurte, ca în exemplul de mai sus. Dar, pe măsură ce crește numărul de parametri și lungimea valorilor lor, devine greu să le gestionăm ca parametri URL.
Folosind această metodă, luăm argumente ca o pereche cheie / valoare într-un obiect JSON pentru a le transmite de-a lungul cererii. Până acum, am folosit Postman pentru a trimite cereri către server. Vom analiza modul în care putem implementa această metodă folosind HTML și jQuery.
Luați în considerare următoarea formă simplă, care constă din trei câmpuri pentru titlu
, stare
, si conţinut
:
Când se trimite formularul de mai sus, se execută următorul cod JavaScript (jQuery):
var postForm = $ ('# post-form'); var jsonData = funcție (formă) var arrData = form.serializeArray (), objData = ; $. fiecare (arrData, funcție (index, elem) objData [elem.name] = elem.value;); returnați JSON.stringify (objData); ; (url: 'http: // your-dev-server / wp-json / wp / v2 / posts', metoda: 'POST', date: jsonData (postForm), crossDomain: true, contentType: 'application / json', inainteSend: function (xhr) xhr.setRequestHeader (' funcția (date) console.log (date);, eroare: funcție (eroare) console.log (eroare);););
La trimiterea formularului de mai sus, trimitem o solicitare AJAX la / Wp / v2 / mesaje
traseu. jsonData ()
metoda acceptă o instanță jQuery a formularului HTML și își convertește datele în format JSON. Aceste date JSON sunt apoi utilizate în date
proprietate a $ .Ajax ()
metodă. În plus, am setat tipul de conținut la application / json
folosind tipul de conținut
proprietate.
Înainte de a trimite cererea, setăm antetul pentru a include Autorizare
antet pentru utilizarea metodei de autentificare de bază. Am învățat deja să configuram și să folosim metoda de autentificare de bază în a doua parte a acestei serii.
În cele din urmă, solicitarea este trimisă către / Wp / v2 / mesaje
traseu și este creată o nouă postare. Acest obiect nou creat este returnat de server ca răspuns și pur și simplu îl logam în consola din interiorul succes()
metodă.
Exemplul de mai sus demonstrează utilizarea formatului JSON pentru a trimite date de-a lungul cererii. Sursa acestui obiect JSON poate fi orice altceva decât un formular HTML, în funcție de arhitectura aplicației dvs..
Rețineți că pentru ca codul de mai sus să funcționeze corect, poate fi necesar să setați Access-Control-Allow-Cap
antet pentru a include Autorizare
și Tipul de conținut
valori. Acest lucru se poate face prin adăugarea următorului cod în WordPress .htaccess fişier:
Antet Set Access-Control-Allow-Headers "Tip de conținut, autorizare"
Să analizăm acum trimiterea de date prin formulare HTML.
Ultimul mod de a trimite date de-a lungul cererii este prin utilizarea formularelor HTML. Aceste formulare trebuie să conțină câmpuri cu Nume
atribut. Nume
atributul servește ca un nume de argument ca titlu
, stare
, conţinut
, etc. Valorile acestor câmpuri servesc drept valoare a acestor argumente.
Putem folosi același form HTML creat în exemplul anterior și apoi vom folosi următorul cod pentru a crea o postare nouă:
var postForm = $ ('# post-form'); (url: 'http: // your-dev-server / wp-json / wp / v2 / posts', metoda: 'POST', date: postForm.serialize (), crossDomain: true, înainteSend: functie (xhr) xhr.setRequestHeader ('Autorizare', 'Nume de utilizator: parola'); jurnal (date);););
Codul de mai sus este același cu cel din exemplul anterior, cu excepția faptului că l-am eliminat jsonData ()
și trimitem acum datele formularului în format de șir folosind jQuery serialize ()
metodă. Codul jQuery de mai sus utilizează valoarea implicită application / x-www-form-urlencoded
tipul de conținut care trimite datele sub forma unui șir gigant cu argumente separate de către &
semnul și valorile acestora fiind atribuite utilizând =
semn. Acest lucru seamănă oarecum cu trimiterea de date ca parametri de adresă URL, cu excepția faptului că nu expune date. Acesta este un mod eficient de a trimite date dacă datele conțin doar caractere alfanumerice.
Pentru a trimite date binare (non-alfanumerice), folosim multipart / form-data
tipul de conținut. Această metodă poate fi utilizată dacă trebuie să încărcați imagini sau alte fișiere utilizând API-ul WP REST.
Pentru a trimite date de formular în Postman, puteți comuta la Corp și apoi utilizați fie formular-date sau x-www-form-urlencoded opțiune.
Argumentele pot fi apoi definite în perechi cheie / valoare pentru a trimite de-a lungul cererii.
Informații detaliate privind diferitele tipuri de formulare pot fi găsite în specificațiile W3C.
multipart / form-data
Tipul de conținutAcum, că am privit la x-www-form-urlencoded
formularul de tip, care trimite datele sub forma unui șir, să începem să explorăm un tip de codificare de formă mai avansat, adică. multipart / form-data
.
multipart / form-data
tipul de conținut este utilizat atunci când se ocupă de date binare și, prin urmare, poate fi folosit pentru a încărca imagini sau alte tipuri de fișiere pe server.
În exemplul următor, folosim un simplu formular HTML constând dintr - un intrare [type =“file“]
și un pic de jQuery pentru a încărca imagini pe server folosind / Wp / v2 / mass-media
traseu.
Luați în considerare următorul formular HTML:
Următorul cod JavaScript va fi executat atunci când se va trimite formularul de mai sus:
var imageForm = $ ('# imagine-form'), fileInput = $ ('fișier'), formData = new FormData (); imageForm.on ('trimite', funcția (e) e.preventDefault (); formData.append ('fișier', fileInput [0] .files [0]); a-dev-server / wp-json / wp / v2 / media ", metoda: 'POST', data: formData, crossDomain: true, contentType: false, processData: false, beforeSend: function (xhr) xhr.setRequestHeader (Nume de utilizator: parola);, succes: functie (date) console.log (data);, eroare: functie (eroare) console.log (eroare)); ;
Aici primim o instanță jQuery a formularului și a câmpului său de intrare. Apoi inițializăm un nou FormData
obiect. FormData
oferă o modalitate de a construi un set de câmpuri de formular cu perechi cheie / valoare și utilizează același format ca și multipart / form-data
forme de tip codificare.
Atunci când formularul este trimis, vom împiedica trimiterea acestuia prin apelarea .preventDefault ()
metodă pentru obiectul evenimentului. Apoi adăugăm un câmp nou la formData
instanță folosind .adăuga()
metodă. .adăuga()
metoda acceptă două argumente pentru Nume
si valoare
din teren. API-ul WP REST forțează Nume
atributul câmpului de introducere a fișierului va fi fişier
. De aceea am stabilit primul argument - Nume
-a fi fişier
, iar pentru cel de-al doilea argument trecem un obiect blob cu referire la elementul de intrare.
Implicit, datele au trecut în date
proprietate a jQuery.ajax ()
metoda este procesată într-un șir de interogare. Din moment ce încarcă fișiere imagine aici, nu vrem să se întâmple acest lucru, și în acest scop am setat procesarea datelor
proprietate la fals
. Am setat și tipul de conținut
proprietate la fals
a preveni application / x-www-form-urlencoded
fiind trimis ca tip de conținut implicit la server.
În cele din urmă, am setat Autorizare
antet pentru a ne autentifica ca utilizator cu edit_posts
privilegii.
Asigurați-vă că rulați scriptul de mai sus dintr-un server. Dacă totul merge bine și fișierul este încărcat, serverul va returna obiectul media nou creat.
Această imagine poate fi apoi setată ca o imagine recomandată pentru o postare.
Urmărind cu atenție modalitățile de a crea și actualiza resurse folosind API-ul WP REST, să vedem cum putem să le ștergem.
Ștergerea datelor cu API-ul WP REST este la fel de simplă ca trimiterea unui a ȘTERGE
cererea către o anumită resursă.
Dacă trebuie să ștergem o postare care are un ID de 10
, trimitem următoarele ȘTERGE
cerere:
$ DELETE / wp / v2 / posturi / 10
Aceasta va muta postarea în coșul de gunoi, dar nu o va șterge definitiv. Pentru ștergerea definitivă a unei postări, folosim forta
argument:
$ DELETE / wp / v2 / posturi / 10? Forță = adevărat
Rețineți că forta
argumentul este necesar atunci când ștergeți o resursă care nu acceptă trasarea. Exemple de astfel de resurse sunt post-meta și media.
După ce am spus acest lucru, încheiem acum partea curentă a seriei.
În acest tutorial indelungat, am analizat crearea, actualizarea și ștergerea diferitelor tipuri de resurse utilizând API-ul WP REST. Am aflat despre modalități diferite de a trimite date de-a lungul cererii, inclusiv trimiterea de date ca parametri URL, în format JSON și utilizând formulare. La sfârșitul tutorialului, am aflat despre ștergerea resurselor prin trimiterea unui mesaj ȘTERGE
cerere.
În următoarea și ultima tranșă a seriei, vom afla despre structura internă a WP REST API și clasele sale. Vom învăța, de asemenea, să extindem API-ul pentru a modifica răspunsurile serverului. Ne vedem în următoarea parte a serialului ...