În articolul precedent, am revizuit articolele anterioare privind solicitările GET, facilitățile native PHP pentru formularea de solicitări și am examinat WordPress wp_remote_post
API funcționează împreună cu argumentele pe care le oferă.
În acest articol, vom face uz wp_remote_post
astfel încât să reușim să o vedem în acțiune. Amintiți-vă că acest lucru - cum ar fi wp_remote_post
- face parte din API-ul HTTP, al cărui alte funcții merită revizuite.
Dar, deocamdată, o să punem wp_remote_post
a munci.
Mai precis, vom face următoarele:
Sigur, este un exemplu de exemplu, dar ne va oferi experiența de a crea un script separat PHP care poate fi utilizat pentru operațiunile declanșate de utilizarea wp_remote_post
.
Oricum, pentru scopurile acestui exemplu, vom folosi PHP $ _SERVER
colectare pentru a fi înregistrată atunci când utilizatorul și-a prezentat preferința, în loc să solicite autentificarea.
În cele din urmă, codul sursă va fi disponibil pe GitHub și va fi accesibil la sfârșitul acestei serii în următorul articol.
Pentru moment, însă, să începem să lucrăm la plugin.
Dacă ați urmat oricare dintre articolele mele din ultimele câteva luni, atunci știți că sunt un fan al modelului singleton și că, de obicei, folosesc aceeași placă de boot pentru construirea pluginurilor mele.
În acest scop, multe dintre acestea vor fi repetitive - este în regulă, deocamdată. Logica de afaceri - sau logica de bază - a plugin-ului este ceea ce se va schimba, deci stați bine reglat.
În tine wp-content / plugins director, creați un director numit wp-remote-post-exemplu deoarece acesta va fi numele pluginului nostru. După aceea, toate fișierele următoare:
În wp-remote-post-example.php, adăugați următorul cod:
wp_remote_post. * Versiune: 1.0.0 * Autor: Tom McFarlin * URI autor: http://tommcfarlin.com * Licență: GPL-2.0 + * Licență URI: http://www.gnu.org/licenses/gpl-2.0.txt * / // Dacă acest fișier este apelat direct, anulați. dacă (! definit ('WPINC')) die; require_once (plugin_dir_path (__FILE__). 'class-wp-remote-post.php'); WP_Remote_Post_Example :: get_instance (); "
Apoi în clasa-wp-remote-post-example.php adăugați următorul cod:
În final, adăugați următoarea linie wp-remote-receiver.php:
Datele postale"ecou"
Acum puteți salva sau ignora aceste informații,
";"Observați că vom fi iterați prin lista de $ _POST
date și afișarea acestuia într-un format de listă care îl face ușor de citit.
Rețineți că, din motive de spațiu, voi lăsa comentariile despre cod din acest plugin special. Fișierul descărcat de pe GitHub va fi pe deplin documentat și va fi de asemenea disponibil în următoarea postare.
În acest moment, ar trebui să puteți activa pluginul; cu toate acestea, nimic nu se va întâmpla în momentul activării în afară de a vedea un mesaj de succes.
Asta e bine!
În acest moment, să adunăm informațiile pe care dorim să le trimitem ca parte a cererii. Mai exact, să obținem următoarele:
Adăugați următoarea linie în constructor (fișierul privat __construi
funcție, adică - nu publicul get_instance
funcţie):
add_action ('the_content', array ($ this, 'get_post_response'));
Apoi, adăugați următoarea funcție la clasă:
funcția publică increment_visitor_count ($ content) if (is_single ()) $ unique_id = $ _SERVER ['REMOTE_ADDR']; $ site_url = site_url (); $ pagina_url = get_peratura (); retur $ conținut;
Aici, luăm ID-ul unic de la REMOTE_ADDR
indexul $ _SERVER
colectăm, luăm adresa URL a site-ului așa cum este definită de WordPress și apoi stocăm permalink-ul paginii curente în propria ei variabilă.
În acest moment, suntem gata să facem cererea. Rețineți din articolul precedent că există mai multe informații pe care trebuie să le trimiteți împreună cu solicitarea:
Destul de ușor, corect?
Deci, să continuăm să ne actualizăm funcția de mai sus cu următorul bloc de cod, astfel încât funcția să pară acum:
funcția publică increment_visitor_count ($ content) if (is_single ()) $ unique_id = $ _SERVER ['REMOTE_ADDR']; $ site_url = site_url (); $ pagina_url = get_peratura (); $ url = plugins_url ('wp-remote-post-example / wp-remote-receiver.php'); $ response = wp_remote_post ($ url, array ('body' => array ('unic-id' => $ unic_id; adresa '=> $ site_url; retur $ conținut;
În acest moment, ar trebui să puteți reîncărca pagina, deși nu veți vedea neapărat că se întâmplă ceva.
Chiar și așa, nu e nimic de asemenea complicată, corectă?
În acest moment, presupunând că totul este conectat corect, acum putem afișa rezultatele.
Pentru a face acest lucru, va trebui să verificăm mai întâi pentru a vedea dacă există o eroare, apoi să afișați un mesaj în acest caz; în caz contrar, vom afișa rezultatele solicitării de postare.
Adăugați următoarea condiție la funcția de mai sus, direct sub wp_remote_post
apel:
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. = '„; conținut $. = $ html;". __ ('Mesajul tău postat cu succes! Răspunsul a fost după cum urmează:', 'wprp-example'). '
„; $ html. = '". $ răspuns ['body']. '
„; $ html. = '
Rețineți că alegem să adăugăm câteva coduri HTML bazate pe răspunsul care se va afișa în partea de jos a postării.
În acest moment, versiunea curentă a pluginului ar trebui să arate astfel:
array ('unique-id' => $ unic_id, 'adresa' => $ site_url, 'viewed page' => $ page_url))); 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. = '„; conținut $. = $ html; retur $ conținut;". __ ('Mesajul tău postat cu succes! Răspunsul a fost după cum urmează:', 'wprp-example'). '
„; $ html. = '". $ răspuns ['body']. '
„; $ html. = '
În următoarea și ultima postare din această serie, vom lucra pentru a face ca informațiile adăugate la partea de jos a postării să pară puțin mai clare prin utilizarea LESS pentru CSS doar pentru a obține o experiență în acest sens și pentru a continua îmbunătățirea modul în care pluginul arată.
Vom asigura, de asemenea, că pluginul este complet documentat și disponibil pe GitHub pentru o examinare ulterioară.
Până atunci, să ne distrăm cu ceea ce am acoperit aici și vom avea mai mult de împărțit în ultimul articol.