Uno sguardo all'API HTTP di WordPress un esempio pratico di wp_remote_post

Nel precedente articolo, abbiamo esaminato gli articoli precedenti relativi alle richieste GET, le funzionalità native di PHP per effettuare richieste e recensito WordPress wp_remote_post Funzione API insieme agli argomenti che offre.

In questo articolo, faremo uso di wp_remote_post tale che siamo effettivamente in grado di vederlo in azione. Ricorda che questo - come wp_remote_post - fa parte dell'API HTTP di cui esistono altre funzioni da valutare.

Ma, per ora, lo metteremo wp_remote_post lavorare.

Nello specifico, faremo quanto segue:

  • Quando la pagina viene caricata, invieremo alcune informazioni a uno script personalizzato
  • Lo script esaminerà le informazioni e lo restituirà alla nostra pagina
  • Visualizzeremo quindi i dati sulla pagina

Certo, è un esempio un po 'forzato ma ci darà l'esperienza di creare uno script PHP separato che può essere usato per operazioni innescate dall'uso di wp_remote_post.

Ad ogni modo, per gli scopi di questo esempio, useremo il PHP $ _SERVER raccolta da registrare quando l'utente ha inviato la propria preferenza piuttosto che richiedere che abbia effettuato l'accesso.

Infine, il codice sorgente sarà reso disponibile su GitHub e accessibile alla fine di questa serie nel seguente articolo.

Per ora tuttavia, iniziamo a lavorare sul plugin.


Stubbing Out the Class

Se hai seguito uno dei miei articoli negli ultimi mesi, allora sai che sono un fan del modello singleton e che di solito utilizzo lo stesso boilerplate per creare i miei plugin.

A tal fine, molto di questo sarà ripetitivo. Va bene, per ora. La logica di business - o core logic - del plug-in è ciò che cambierà, quindi rimanete sintonizzati.

Prepara il plugin

Nel tuo wp-content / plugins directory, creare una directory chiamata wp-remote-post-example come questo sarà il nome del nostro plugin. Dopo di ciò, tutti i seguenti file:

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

Nel wp-remote-post-example.php, aggiungi il seguente codice:

 wp_remote_post. * Versione: 1.0.0 * Autore: Tom McFarlin * URI autore: http://tommcfarlin.com * Licenza: GPL-2.0 + * URI licenza: http://www.gnu.org/licenses/gpl-2.0.txt * / // Se questo file viene chiamato direttamente, abortire. se (! defined ('WPINC')) die;  require_once (plugin_dir_path (__FILE__). 'class-wp-remote-post.php'); WP_Remote_Post_Example :: get_instance (); "

Quindi, in class-wp-remote-post-example.php aggiungi il seguente codice:

  

Infine, aggiungi la seguente riga a wp-remote-receiver.php:

 I dati del post"; eco "
    "; foreach ($ _POST come $ chiave => $ valore) echo"
  • ". $ chiave.": ". $ valore."
  • "; eco "
"; eco "

Ora puoi salvare o ignorare queste informazioni,

";"

Si noti che stiamo andando a scorrere l'elenco di $ _POST dati e visualizzarli in un formato elenco che lo rende facile da leggere.

Si noti che per motivi di spazio, sto lasciando commenti di codice da questo particolare plugin. Il file scaricabile su GitHub sarà completamente documentato e sarà anche disponibile nel prossimo post.

A questo punto, dovresti essere in grado di attivare il plugin; tuttavia, all'attivazione non accadrà nulla se non vedere un messaggio di successo.

Questo è buono!

Richiedi le informazioni sulla richiesta

A questo punto, raccogliamo le informazioni che vogliamo inviare come parte della richiesta. Specificamente, otteniamo quanto segue:

  • L'indirizzo unico del visitatore
  • L'indirizzo della homepage per il blog
  • L'indirizzo della pagina che viene visitata

Aggiungi la seguente riga nel costruttore (il privato __costruirefunzione, cioè - non il pubblico get_instance funzione):

 add_action ('the_content', array ($ this, 'get_post_response'));

Successivamente, aggiungi la seguente funzione alla classe:

 funzione pubblica increment_visitor_count ($ content) if (is_single ()) $ unique_id = $ _SERVER ['REMOTE_ADDR']; $ site_url = site_url (); $ page_url = get_permalink ();  return $ content; 

Qui, stiamo prendendo l'ID univoco dal REMOTE_ADDR indice del $ _SERVER raccolta, stiamo prendendo l'URL del sito come definito da WordPress, e quindi stiamo memorizzando il permalink della pagina corrente nella sua variabile.

Fai la richiesta

A questo punto, siamo pronti a fare la richiesta. Ricordiamo dal precedente articolo che ci sono diverse informazioni che dobbiamo inviare insieme alla richiesta:

  • L'URL
  • Il contenuto del corpo (che utilizzeremo come ID univoco, Indirizzo e Pagina visualizzata

Abbastanza facile, giusto?

Quindi continuiamo ad aggiornare la nostra funzione sopra con il seguente blocco di codice in modo che la funzione ora assomigli a questa:

 funzione pubblica increment_visitor_count ($ content) if (is_single ()) $ unique_id = $ _SERVER ['REMOTE_ADDR']; $ site_url = site_url (); $ page_url = get_permalink (); $ url = plugins_url ('wp-remote-post-example / wp-remote-receiver.php'); $ response = wp_remote_post ($ url, array ('body' => array ('unique-id' => $ unique_id, 'address' => $ site_url, 'page-viewed' => $ page_url)));  return $ content; 

A questo punto, dovresti essere in grado di ricaricare la pagina anche se non necessariamente vedrai accadere qualcosa.

Anche se non è niente pure complicato, giusto?

Mostra il risultato

A questo punto, supponendo che tutto sia cablato correttamente, ora possiamo visualizzare i risultati.

Per fare ciò, dovremo prima controllare se esiste un errore, quindi visualizzare un messaggio; altrimenti, mostreremo i risultati della richiesta di post.

Aggiungi il seguente condizionale alla funzione sopra direttamente sotto wp_remote_post chiamata:

 if (is_wp_error ($ response)) $ html = '
'; $ html. = __ ('Si è verificato un problema nel recupero della risposta dal server.', 'wprp-example'); $ html. = '
'; else $ html = '
'; $ html. = '

'. __ ('Il tuo messaggio è stato pubblicato con successo! La risposta è stata la seguente:', 'wprp-example'). '

'; $ html. = '

'. $ risposta ['corpo']. '

'; $ html. = '
'; $ content. = $ html;

Tieni presente che stiamo optando per l'aggiunta di un codice HTML in base alla risposta che verrà visualizzata nella parte inferiore del post.


La versione corrente di lavoro

A questo punto, la versione corrente del plug-in dovrebbe essere simile a questa:

  array ('unique-id' => $ unique_id, 'address' => $ site_url, 'page-viewed' => $ page_url))); if (is_wp_error ($ response)) $ html = '
'; $ html. = __ ('Si è verificato un problema nel recupero della risposta dal server.', 'wprp-example'); $ html. = '
'; else $ html = '
'; $ html. = '

'. __ ('Il tuo messaggio è stato pubblicato con successo! La risposta è stata la seguente:', 'wprp-example'). '

'; $ html. = '

'. $ risposta ['corpo']. '

'; $ html. = '
'; $ content. = $ html; return $ content;

Nel post successivo e finale di questa serie, lavoreremo per rendere le informazioni aggiunte in fondo al post un po 'più ordinate attraverso l'uso di LESS per i CSS solo per avere un po' di esperienza con questo, e per continuare a migliorare il modo il plugin sembra.

Ci assicureremo inoltre che il plug-in sia completamente documentato e disponibile su GitHub per ulteriori analisi.

Fino ad allora, armeggia con ciò che abbiamo coperto qui e avremo più da condividere nell'articolo finale.