O privire la API-ul WordPress HTTP Salvarea datelor din wp_remote_post

În postul anterior din serie, am început să lucrăm la un plugin mic care a furnizat un exemplu practic wp_remote_post. Chestia este că exemplul era incomplet.

Sigur, este frumos să vedem cum să efectuați un apel utilizând funcția și chiar cum să configurați un script responsabil pentru primirea datelor și returnarea datelor, dar nu este de folos decât dacă facem ceva cu acesta.

În acest articol final din serie, vom revizui pluginul pe care l-am început cu ultimul articol și vom începe să îl îmbunătățim puțin.

Mai exact, vom ...

  • Revedeți ce am făcut
  • Începeți să faceți niște modificări la lucrarea pe care am creat-o în ultimul articol
  • Modelați prezentarea cu LESS pentru a vă actualiza unele dintre aptitudinile noastre mai noi
  • Examinați argumentele acceptate de ambele wp_remote_get și wp_remote_post

În final, toate lucrările realizate în acest articol vor fi disponibile pe GitHub și vor fi legate în concluzia articolului. Dar înainte de asta, să mergem mai departe și să începem.


Ce am făcut

În articolul precedent, am setat un plugin de bază care ar afișa informații despre vizitator pe site-ul web curent:


Un exemplu de date wp_remote_post

Folosind informațiile disponibile prin intermediul serverului, putem afișa ID-ul vizitatorului, adresa la care au navigat și pagina care a fost vizionată.

O chestie ușoară, corect?

Pentru a face codul mai ușor de citit, menținut și capabil să fie decorat, există câteva lucruri pe care trebuie să le facem. Dar, mai întâi, dacă ați ajuns atât de departe, revizuiți articolul precedent, implementați codul sursă, apoi reveniți la acest post.


Receptorul la distanță revizuit

Reamintim din articolul precedent, am introdus un fișier numit wp-remote-received.php care a fost responsabil pentru apucarea de informații de la PHP $ _POST colectarea și construirea unei viziuni care să fie mai ușor de utilizat decât o scurtă descriere a datelor.

Mai exact, iată codul cu care lucrăm:

 Datele postale"ecou"
    "foreach ($ _POST ca $ cheie => valoarea $) echo"
  • ". $ key": ". $ value".
  • "; echo"
"ecou"

Acum puteți salva sau ignora aceste informații,

„;

Dar hai să ne curățăm puțin. Mai degrabă decât echivalând mai multe declarații, să construim un singur șir de cod HTML, apoi să-l returnez. În plus, vom oferi câteva elemente suplimentare și nume de clase care vor facilita accesul prin CSS:

 „; $ html. = '

Datele postale

„; $ html. = '
    „; foreach ($ _POST ca $ cheie => valoare $) $ html. = '
  • ". cheie cheie. ': ". $ valoare. '
  • „; // sfârșitul foreach $ html. = '
„; $ html. = '
„; // În final, ecou HTML la solicitant echo $ html;

Nimic prea complicat. Pe scurt, am adăugat un înveliș cu un ID unic, apoi am plasat totul în ambalajul menționat. De asemenea, am eliminat propoziția cu privire la posibilitatea de a salva sau nu informațiile.

Vedeți pagina din browser pentru a verifica dacă toate lucrurile arată la fel. În acest moment, nu ar trebui să existe nicio diferență între captura de ecran de mai sus.

Dacă da, examinați codul.


Adăugați un anumit stil

Înainte de a trece la serializarea acestor informații, să continuăm să stylizăm informațiile furnizate de receptor.

Pentru a face asta, hai să creăm a css directorul din directorul plugin-ului. Vom crea, de asemenea, o Mai puțin în care se va localiza fișierul LESS al plugin-ului nostru. O să sun dosarul display.less deoarece este obișnuit cu stilul afișat :).


Pregătirea directorului LESS

Apoi, vom adăuga întregul director plugin la CodeKit. Dacă nu sunteți familiarizat cu modul în care puteți face acest lucru, consultați această serie.

În acest moment, suntem gata să scriem un pic mai puțin pentru a oferi pluginului nostru o prezentare puțin mai bună.

Adăugați următorul cod în fișierul LESS:

 # wp-remote-post-example-container fundal: # f7f5e7; frontieră: 1px solid # ac0404; padding: 20px; h4 margine: 0;  // h4 ul li list-style-type: cerc;  // li // ul // / # wp-remote-post-example-container

CodeKit (sau compilatorul LESS dacă alegeți să mergeți pe acel traseu) ar trebui să genereze CSS-ul corespunzător. Apoi, trebuie să instruim pluginul nostru pentru a încărca noul fișier CSS. Pentru a face acest lucru, adăugați următoarea linie de cod la constructorul dvs.:

 add_action ('wp_enqueue_scripts', array ($ this, 'add_style_sheet'));

Apoi, adăugați următoarea funcție la clasa dvs.:

 funcția publică add_style_sheet () wp_enqueue_style ('wp-remote-post-example-style', plugins_url ('wp-remote-post-example / css / display.css'));  // end add_style_seet

În cele din urmă, reîncărcați o singură postare și pagina dvs. ar trebui să arate astfel:

Exemplu WP de la distanță cu stil

Arata destul de bine, nu? Sigur, puteți personaliza oricum doriți, dar acesta este exemplul cu care mergem în scopul acestui articol.


Salvarea datelor postale

În cele din urmă, suntem gata de fapt do ceva cu aceste date.

Acum, vom defini o funcție care are un răspuns de la wp-remote-receiver.php și de fapt, să-l salveze la post meta date, dar numai dacă nu există deja.

Mai precis, iată ce vom face:

  • Utilizați ID-ul unic ca cheie
  • Dacă există adresa pentru identificatorul unic, atunci nu vom face nimic
  • În caz contrar, vom stoca și adresa și pagina care a fost vizualizată

În acest scop, mai întâi să definim o funcție care va face exact acest lucru. Rețineți că va accepta un cod unic, care va corespunde adresei IP pe care o vedem mai sus, precum și adresa URL a site-ului și adresa URL a paginii.

 funcția privată save_post_data ($ unique_id, $ site_url, $ page_url) if ("== get_post_meta (get_the_ID (), 'unique_id', true)) add_post_meta (get_the_ID (), unique_id, $ unique_id); (), // site_url ', $ site_url); add_post_meta (get_the_ID (),' page_url ', $ page_url); // // end if

Pe baza cerințelor enumerate mai sus, vom economisi doar date pentru această postare dacă nu există nimic în prezent pentru adresa IP dată.

În acest moment, trebuie doar să facem o mică modificare pentru noi get_post_response funcţie. Actualizați condiționatul astfel încât acesta să apeleze la funcția pe care am definit-o mai sus:

 dacă (is_wp_error ($ răspuns)) $ html = '
„; $ html. = __ ('A apărut o problemă la preluarea răspunsului de la server.', 'wprp-example'); $ html. = '
„; altceva $ html = '
„; $ html. = '

". __ ('Mesajul tău postat cu succes! Răspunsul a fost după cum urmează:', 'wprp-example'). '

„; $ html. = '

". $ răspuns ['body']. '

„; $ html. = '
„; $ this-> save_post_data ($ unic_id, $ site_url, $ page_url);

Si asta e!


Concluzie

Pluginul final este disponibil pentru examinare și pentru descărcare pe GitHub. Acesta include, de asemenea, documentația pentru fiecare funcție inclusă în plugin, precum și o README, astfel încât să puteți urmări împreună cu tot ce a fost inclus aici.

Rețineți că dacă sunteți interesat de argumentele pe care le faceți wp_remote_post acceptă, revizuiesc articolul precedent în care am abordat acest lucru când vorbim wp_remote_get.

În cele din urmă, acest lucru doar zgârie suprafața a ceea ce este posibil cu API-ul HTTP. Sperăm că această serie a ajutat la o introducere solidă în API și a ajutat la deschiderea unei noi căi de lucru pentru API.

Cod