WordPress REST API: Caracteristica CMS de generație următoare

Publicat: 2022-03-11

Mai mult de un sfert din web rulează pe WordPress. Este o ispravă destul de remarcabilă, având în vedere că există de mai bine de un deceniu, ceea ce o face destul de veche în anii tehnologiei.

Care este sosul secret al WordPress? Ușor – este cea mai simplă, dar cea mai extensibilă modalitate de a vă gestiona conținutul. Cu toate acestea, pentru o vreme, WordPress părea să fi rămas în urmă.

Pe măsură ce web-ul a devenit din ce în ce mai dependent de JavaScript pentru a crea experiențe captivante și interactive, a devenit din ce în ce mai clar că WordPress ar trebui să ofere noi modalități utilizatorilor și dezvoltatorilor de a interacționa cu conținutul lor.

În timp ce WordPress este construit pe – și va continua să fie construit pe – PHP, API-ul WP REST este o încercare de a crea o punte între moștenirea nucleului PHP WordPress și potențialul și puterea aplicațiilor web JavaScript, precum și a aplicațiilor mobile native. și aplicații desktop.

API-ul REST WordPress aduce conținutul oricărui site web WordPress într-un API ușor de consumat, permițând WordPress să servească drept sistem de stocare și recuperare pentru publicarea conținutului pe web.

Aducerea API-ului REST la WordPress

Dacă credeți că API-ul WP REST a apărut de nicăieri, vă înșelați.

Adăugarea unei funcții complet noi la WordPress nu este o sarcină simplă. Prin natura software-ului open-source, dezvoltarea WordPress depinde de comunitatea în general pentru a face progrese.

Dezvoltarea pentru API a început în urmă cu câțiva ani ca un plugin de caracteristici separat, care a permis dezvoltatorilor să experimenteze și să contribuie la proiect într-un mediu controlat.

De-a lungul multor iterații și îmbunătățiri și a două versiuni complet separate, colaboratorii din spatele API-ului REST au trebuit să testeze și să evalueze beneficiile și consecințele imense ale furnizării de acces API deschis la date pe zeci de milioane de site-uri web.

WordPress 4.4, nume de cod „Clifford”, a adus infrastructura inițială a proiectului în nucleul WordPress, în timp ce punctele finale nu au apărut până la WordPress 4.7, „Vaughan”.

În esență, acest lucru a permis dezvoltatorilor timp să testeze funcționalitatea care alimentează API-ul fără a expune efectiv datele în sine.

Acum că punctele finale de conținut inițiale au fost îmbinate în toate versiunile actuale de WordPress, dezvoltatorii de pluginuri și autorii de teme pot experimenta noi modalități interesante de a prelua, vizualiza și schimba datele în afara experienței tradiționale wp-admin.

Despărțirea abrevierilor: de la HTTP la un API REST JSON

Pentru a înțelege semnificația API-ului WP REST, poate ajuta să înțelegem fundamentul modului în care partajăm datele online și spre unde se poate îndrepta Internetul.

HTTP este baza pentru majoritatea traficului web cu care ne confruntăm zilnic. Dacă introduceți o adresă URL într-un browser, faceți o solicitare . Serverul corespunzător primește cererea dumneavoastră și oferă un răspuns . Această tranzacție este baza pentru aproape tot ceea ce facem online. Browserele fac cereri, iar serverele oferă răspunsuri.

Tipul de solicitare pe care îl facem poate afecta tipul de răspuns pe care îl primim. De cele mai multe ori, facem o solicitare simplă GET : „Hei Google, GET-mi pagina ta de destinație”. Google oferă un răspuns.

Pe măsură ce web-ul a devenit mai interactiv, am început să profităm de alte solicitări HTTP, inclusiv PUT , POST și DELETE .

De exemplu, completăm o bară de căutare pe un site web: „Hei Google, POSTĂ adresa mea de e-mail și parola în pagina ta de conectare”. Google începe o nouă sesiune pentru noi și oferă un răspuns diferit.

Acest protocol este baza de bază pe care ne construim site-urile WordPress.

Folosim formulare și PHP pentru a obține și POST datele în baza noastră de date. Spre deosebire de opinia populară, această bază de bază a WordPress nu se va schimba prea curând. Tot ceea ce face WordPress acum este să ofere dezvoltatorilor o nouă modalitate de a interacționa cu datele lor WordPress printr-un API RESTful.

Transfer de stat reprezentativ (REST)

Dezvoltatorii WordPress ar trebui să fie familiarizați cu API-urile în general, cum ar fi API-ul Shortcode și API-ul Opțiuni. Aceste API-uri definesc funcționalitatea componentelor care cuprind WordPress, astfel încât autorii de teme și pluginuri pot extinde capacitățile de bază ale WordPress. API-ul WP REST, totuși, este puțin diferit.

O API REST sau RESTful se referă la expunerea în siguranță a datelor dvs. la solicitări HTTP din surse externe. Este, de asemenea, despre configurarea unei arhitecturi comune și a unui set de protocoale pentru a răspunde la aceste solicitări. Deși există idei și principii mai avansate în spatele acestui tip de serviciu, acestea depășesc scopul acestui articol.

Existența API-ului WP REST, în special după WordPress 4.7, înseamnă că tot conținutul site-ului dvs., inclusiv postările, paginile, comentariile și orice meta postare publică, este acum direct accesibil ca date brute. De asemenea, înseamnă că puteți face modificări acestor date din afara tradiției wp-admin, dacă doriți, poate printr-o aplicație mobilă sau desktop.

În loc să vă gândiți la datele dvs. ca simple rânduri dintr-o bază de date, acum puteți avea acces serializat la acestea sub formă de JSON.

JSON - Ce s-a întâmplat cu XML?

Veterinarii WordPress au multă experiență cu XML, un format comun pentru partajarea conținutului între site-uri.

Similar cu XML, JSON este pur și simplu un mecanism care ne permite să transferăm cu ușurință date prin gruparea lor într-o anumită sintaxă. JSON este de fapt un șir, o reprezentare textuală a unui obiect JavaScript, care stochează datele dvs. într-un set de perechi cheie-valoare. O reprezentare JSON comună a unei postări WordPress poate arăta astfel:

 { “id”: 1, “title”: { “rendered”: “Hello World” }, “content”: { “rendered”: “Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!” } }

(Puteți folosi un instrument de formatare JSON pentru a îmbunătăți răspunsul JSON dacă este necesar.)

Un răspuns complet JSON prin API-ul WP REST va include informații suplimentare despre postare, inclusiv metadate. Prin gruparea comodă a acestor date în formatul JSON, puteți interacționa cu conținutul dvs. WordPress în moduri noi și interesante.

Nu este o coincidență că JSON este cel mai bine asociat cu JavaScript. Pe măsură ce mai mulți dezvoltatori WordPress încep să „învețe JavaScript în profunzime”, vom vedea utilizări din ce în ce mai avansate ale WordPress ca backend.

Cum găsim datele: Urmați traseul către un punct final

Accesarea tuturor datelor site-ului dvs. prin API-ul REST este la fel de simplă ca și compunerea unei adrese URL.

Pentru orice site WordPress care rulează cel puțin versiunea 4.7, adăugați următorul șir la sfârșitul adresei URL a site-ului dvs.: /wp-json/wp/v2 (de exemplu, http://example.com/wp-json/wp/v2 ). Puneți acea adresă URL în browser și vedeți ce apare.

Rezultatul probabil arată ca o mare mizerie de date, cu excepția cazului în care ați instalat o extensie de browser care curăță JSON. Acea mare mizerie de date este conținutul și meta informațiile site-ului tău WordPress în format JSON.

Încărcând acel conținut, tocmai ați definit o rută și ați cerut browserului dvs. să-l OBȚINE pentru dvs.

O rută este o adresă URL care este mapată la o anumită metodă. Miezul WordPress citește acea rută, fiecare bară oblică „/” reprezentând o anumită cale sau parametru care ar trebui urmat.

Calea se încheie la un punct final , unde funcțiile din interiorul nucleului WordPress pot lua decizii cu privire la ce date să furnizeze și ce să facă cu orice date care au fost furnizate.

Un exemplu de punct final poate fi „/wp-json/wp/v2/posts/1”, unde am adăugat căile „/posts” și „/1”. Acest punct final specific spune site-ului nostru să parcurgă datele noastre, să ne afișeze postările și să afișeze postarea cu ID-ul 1.

Ceea ce face API-ul REST atât de util este faptul că este extensibil, ceea ce înseamnă că puteți prelua orice date din site-ul dvs. și le puteți adăuga ca punct final. Cele mai multe dintre funcționalitățile de bază ale WordPress sunt în prezent (sau vor fi în curând) acceptate.

Cu toate acestea, dezvoltatorii de teme și pluginuri pot începe să-și adauge conținutul și setările personalizate ca puncte finale, permițând utilizatorilor să interacționeze cu site-urile lor în moduri noi.

Dacă sunteți curios despre punctele finale disponibile în prezent pe site-ul dvs. WordPress, o aplicație de browser precum Postman oferă o interfață grafică special pentru explorarea API-urilor.

Anteturi și autentificare

Introducerea punctelor finale URL în browser pare simplă, dar include de fapt un set de anteturi implicite împreună cu cererea. La rândul său, un set de anteturi sunt de asemenea trimise înapoi împreună cu răspunsul. Aceste anteturi includ o mulțime de informații utile, dar cele mai importante pentru scopurile noastre au de-a face cu tipul de solicitare pe care o facem și dacă suntem sau nu autentificați.

Dacă accesați „instrumentele pentru dezvoltatori” ale browserului dvs., puteți examina antetele HTTP pentru orice material care este încărcat în fereastra browserului, inclusiv fișiere HTML, foi de stil CSS, imagini și multe altele.

Primul antet de luat în considerare este metoda de solicitare , care corespunde direct acelor solicitări HTTP despre care am aflat mai devreme. Aici, cel mai probabil, veți vedea GET ca metodă de solicitare, dacă pur și simplu vedem o pagină.

O aplicație care vă apelează API-ul REST poate alege să schimbe metoda de solicitare a antetului în POST.

O metodă POST spune site-ului dvs. web să introducă date noi sau să modifice datele existente în baza de date WordPress. Prin trimiterea de informații prin metoda POST, alte aplicații au capacitatea de a vă modifica datele, fără a se conecta la wp-admin.

Totuși, nu trebuie să vă faceți griji, deoarece dacă nu au inclus și antete care oferă acreditările adecvate pentru autentificare , site-ul dvs. le va refuza.

NOTĂ: Cu toate acestea, metodele de autentificare a apelurilor către API-ul dvs. REST nu sunt încă finalizate, ceea ce face ca autentificarea să fie cea mai mare barieră de acces pentru dezvoltatorii care doresc să lucreze cu API-ul REST pentru a adăuga sau modifica date.

Pentru moment, există opțiuni disponibile, inclusiv un plugin de la dezvoltatorii din spatele API-ului REST. Pe măsură ce procedurile standard care înconjoară autentificarea își fac loc în centrul, ultimele obstacole vor fi clare pentru utilizarea pe scară largă a API-ului WP REST.

WP REST API Exemplu de aplicație

Ceea ce face ca API-ul WP REST să fie atât de puternic este faptul că este consecvent, așa că ne putem aștepta la aceleași rezultate de bază de la orice site care rulează WordPress 4.7 sau o versiune ulterioară. Cu toate acestea, WordPress este un API distribuit, ceea ce înseamnă că nu există un singur loc din care să obțineți toate datele.

Fiecare site care rulează WordPress este o aplicație unică, cu utilizatori unici și autentificare. Deși poate necesita tehnici de autorizare distincte pentru a edita conținutul prin API-ul REST, putem accesa de fapt postările majorității blogurilor gestionate de WordPress destul de ușor.

Pentru a demonstra, vom face o demonstrație rapidă codepen care încarcă fragmente din cele mai recente postări de la unele bloguri populare legate de WordPress, care, desigur, rulează toate pe WordPress. În timp ce ne aflăm, vom include un formular de căutare, astfel încât să putem căuta de fapt toate aceste site-uri simultan și să tragem articolele relevante din fiecare.

În cele din urmă, vom fi siguri că includem linkul pentru a citi textul integral al articolului pe site-ul original.

Faza 1: Obținerea postărilor recente

Vom începe prin a configura o instanță Vue rapidă și a o monta pe un element. Vom include, de asemenea, Bootstrap, astfel încât să putem avea o grilă și un stil de bază pentru elementele de formular pe care le vom adăuga mai târziu.

Când definim datele, vom dori un loc în care să stocăm numele site-ului (care nu este inclus în răspunsul implicit), adresa URL și postările odată ce le obținem. Iată un exemplu:

 { “name”: “wordpress.org”, “url”: “https://wordpress.org/news/wp-json/wp/v2/posts?per_page=3”, “posts”: [] }

Veți observa că am inclus și primul nostru parametru la sfârșitul adresei URL, per_page . De obicei, API-ul WP REST va pagina rezultatele urmând aceleași reguli ca și cum ar pagina o buclă WP_Query normală. Ne vom limita interogările la primele trei postări.

În continuare, vom defini metoda loadPosts() , care va trece prin lista noastră de surse, va obține rezultatele cu vue-resource și va popula matricea de posts goală a fiecărei surse cu rezultatele.

 loadPosts : function(){ var self = this; self.sources.forEach(function(source, index){ self.$delete(source, 'posts'); // Get API with vue-resource self.$http.get(source.url).then(function(response) { self.$set(source, 'posts', response.data); }, function(response) { console.log('Error'); }); }); }

Vom include, de asemenea, un apel inițial la loadPosts() atunci când instanța noastră Vue este montată cu succes.

 mounted : function(){ this.$nextTick(function(){ // Load posts on initial page load this.loadPosts(); }); }

Păstrarea loadPosts() ca metodă separată va fi utilă în viitor, deoarece începem să facem mai multe apeluri către API. În HTML-ul nostru, vom folosi directivele simple de redare a listelor Vue și sintaxa șablonului pentru a scoate toate postările noastre.

Vedeți Penul încorporat pentru o demonstrație funcțională:

Vedeți exemplul de căutare Pen WP REST API (Faza unu) de Brian Coords (@bacoords) pe CodePen.

Faza 2: Filtrarea rezultatelor

Să adăugăm o bară laterală și să creăm câteva filtre pentru a afișa/ascunde diferitele surse. Pentru a face acest lucru, adăugăm o nouă proprietate obiectului sources , un boolean pe care îl vom numi .

În timp ce adăugăm filtre, haideți să generăm un filtru Vue pentru a ne ajuta să afișăm corect și data. WordPress stochează data și ora postării ca marcaj temporal Unix.

Vom folosi biblioteca terță parte Moment.js pentru a converti data într-un format mai lizibil.

 filters: { // Using Moment.js to convert post date to a readable format prettyDate: function(value){ // Return if date is empty if(!value) return ''; // Convert date to Moment.js var date = moment.utc(value); // Return formatted date return date.format("MMM DD, YYYY,"); } },

Vedeți stiloul încorporat pentru o demonstrație funcțională:

Vedeți exemplul de căutare Pen WP REST API (Faza unu) de Brian Coords (@bacoords) pe CodePen.

Etapa finală: interogări de căutare

Aici vom adăuga un nou parametru la cererea noastră API. Deja, am adăugat parametrul per_page=3 pentru a limita numărul de rezultate pe care le obținem de la fiecare site. Dacă există ceva scris în bara de căutare, îl vom adăuga ca parametru suplimentar.

Acest lucru ne va permite să folosim funcționalitatea de căutare încorporată a fiecărui site, la fel ca și cum am interoga bara de căutare de pe site-ul respectiv.

Vom adăuga o bară de căutare și o vom lega de o variabilă folosind directiva v-model a lui Vue.

În loc să apelăm imediat toate API-urile, atunci când utilizatorul începe să tasteze, vom adăuga un buton și vom lega un eveniment la trimiterea formularului. Apoi vom adăuga o metodă la instanța noastră Vue care adaugă parametrii de căutare (URL codificat, desigur) la adresa URL.

 generateUrl : function(source){ var self = this; // Add search parameters. if(self.searchQuery){ return source.url + '&search=' + encodeURI(self.searchQuery); }else{ return source.url; } }

Vedeți stiloul încorporat pentru o demonstrație funcțională:

Vedeți exemplul de căutare Pen WP REST API (Faza unu) de Brian Coords (@bacoords) pe CodePen.

Deși acesta este un exemplu simplu al API-ului WP REST, ne-am putea imagina o potențială aplicație pentru așa ceva în cadrul WordPress însuși. De exemplu, există deja metacaseta „Știri WordPress”.

Am putea transforma cu ușurință acest demo într-un plugin WordPress, afișându-l pe tabloul de bord WordPress. Acum am integrat capacitatea de a căuta ajutor de la unele dintre cele mai bune site-uri WordPress și tutoriale de web design chiar de pe propriul nostru site.

Potențialul viitor al API-ului REST

Deși exemplul de mai sus doar zgârie suprafața capabilităților API-ului WP REST, ar trebui să transmită unele dintre posibilitățile care încep să apară atunci când începeți să vă jucați cu datele. Fie că este folosit pentru a îmbunătăți experiența utilizatorului pe site-ul propriu-zis, fie pentru a colecta și manipula date dintr-o sursă externă, este un instrument puternic.

În timp ce unii experți din industrie și-au exprimat îngrijorarea cu privire la posibilitatea ca conținutul dvs. să fie „răzuit” și afișat în altă parte, este important să ne amintim că această funcționalitate este similară cu fluxurile RSS și este vital pentru întreținerii site-ului să aibă un control clar asupra datelor care sunt și sunt. nu public.

Pe măsură ce API-ul WP REST devine mai înrădăcinat în structura WordPress, vom începe să-i vedem efectele, poate fără să ne dăm seama. Exemplele au variat de la simple (Citatele despre design ale lui Chris Coyier), la aplicații complexe, cu o singură pagină (site-ul Guggenheim).

Un alt caz de utilizare popular pentru API-ul WP REST este dezvoltarea de aplicații mobile.

Deoarece conținutul este atât de accesibil prin API-ul REST, dezvoltatorii pot crea aplicații native pentru iOS și Android și pot evita nevoia de a crea surse de date duplicat.

Pe măsură ce utilizatorii interacționează cu aceste aplicații mobile, ei vor putea să recupereze și să transforme direct datele site-ului original, fără ca dezvoltatorul să fie nevoit să creeze o infrastructură complexă pentru a sprijini acest lucru.

Aceste aplicații ale API-ului REST destinate vizitatorilor sunt totuși doar începutul, deoarece implicațiile reale sunt mult mai profunde. Unul dintre obiectivele echipei de dezvoltare de bază este să înceapă să-l folosească în întreaga interfață wp-admin.

Odată cu actualizările viitoare WordPress, vom începe să vedem admin-ajax înlocuit în favoarea API-ului, sperăm că crește viteza funcțiilor de bază, cum ar fi editarea meniurilor sau publicarea postărilor.

Acest lucru ar putea merge mână în mână cu concentrarea sporită a WordPress pe Personalizator și Editor ca puncte de plecare ușor de utilizat pentru începătorii WordPress.

Deși API-ul WP REST este extrem de util așa cum este, mai sunt încă multe de făcut. API-ul nu este complet. Mai sunt încă mai multe funcții și puncte finale de adăugat.

În cele din urmă, veți putea interacționa cu site-ul dvs. WordPress fără măcar să îl vizitați. Și în timp ce multe servicii folosesc acum API-uri personalizate pentru a interacționa cu WordPress, trecerea la un API REST standard WordPress înseamnă că mai multe site-uri și servicii se pot interconecta, vorbind aceeași limbă.

WordPress a început ca o platformă de blogging, o modalitate prin care bloggerii se conectează și își împărtășesc gândurile și ideile. Odată cu dezvoltarea API-ului WordPress REST, vom începe să vedem un nou nivel de conectare și partajare în culise. Acest lucru va permite utilizatorilor să-și construiască gândurile și ideile în moduri niciodată considerate anterior, ducând WordPress și utilizatorii săi la frontiere complet noi.