O privire la API-ul WordPress HTTP Un exemplu practic de wp_remote_post

Î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:

  • Când se încarcă pagina, vom trimite anumite informații într-un script personalizat
  • Scriptul va examina informațiile și le va returna pe pagina noastră
  • Apoi vom afișa datele de pe pagină

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.


Stingerea clasei

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.

Pregătiți pluginul

Î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:

  • wp-remote-post-example.php
  • clasa-wp-remote-post-example.php
  • wp-remote-receiver.php

Î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"
    "foreach ($ _POST ca $ cheie => valoarea $) echo"
  • ". $ key": ". $ value".
  • "; echo"
"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!

Obțineți informațiile de solicitare

Î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:

  • Adresa unică a vizitatorului
  • Adresa paginii de pornire pentru blog
  • Adresa paginii pe care o vizitați

Adăugați următoarea linie în constructor (fișierul privat __construifuncț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ă.

Faceți Cererea

Î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:

  • Adresa URL
  • Conținutul corpului (pe care îl vom folosi ca identificator unic, adresa și pagina afișată

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ă?

Afișați Rezultatul

Î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. = '

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

„; $ html. = '

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

„; $ html. = '
„; conținut $. = $ 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.


Versiunea actuală de lucru

Î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. = '

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

„; $ html. = '

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

„; $ html. = '
„; conținut $. = $ html; retur $ conținut;

Î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.

Cod