Î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 ...
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.
În articolul precedent, am setat un plugin de bază care ar afișa informații despre vizitator pe site-ul web curent:
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.
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"
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. = '
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.
Î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 :).
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 stilArata destul de bine, nu? Sigur, puteți personaliza oricum doriți, dar acesta este exemplul cu care mergem în scopul acestui articol.
Î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:
Î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. = '„; $ this-> save_post_data ($ unic_id, $ site_url, $ page_url);". __ ('Mesajul tău postat cu succes! Răspunsul a fost după cum urmează:', 'wprp-example'). '
„; $ html. = '". $ răspuns ['body']. '
„; $ html. = '
Si asta e!
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.