Uno sguardo all'API HTTP di WordPress salvataggio dei dati da wp_remote_post

Nel post precedente della serie, abbiamo iniziato a lavorare su un piccolo plug-in che forniva un esempio pratico di wp_remote_post. Il fatto è che l'esempio era incompleto.

Certo, è bello vedere come effettuare una chiamata utilizzando la funzione e persino come impostare uno script responsabile della ricezione dei dati e della restituzione dei dati, ma è di scarsa utilità a meno che non facciamo nulla con esso.

In questo ultimo articolo della serie, rivedremo il plug-in che abbiamo iniziato con l'ultimo articolo e inizieremo a migliorarlo un po '.

Nello specifico, faremo ...

  • Rivedi ciò che abbiamo fatto
  • Iniziare a fare alcune modifiche al lavoro che abbiamo creato nell'ultimo articolo
  • Modella la presentazione con LESS per mantenere aggiornate alcune delle nostre nuove competenze
  • Esaminare gli argomenti accettati da entrambi wp_remote_get e wp_remote_post

Infine, tutto il lavoro svolto in questo articolo sarà disponibile su GitHub e collegato alla conclusione dell'articolo. Ma prima, andiamo avanti e cominciamo.


Cosa abbiamo fatto

Nell'articolo precedente, abbiamo impostato un plug-in di base che visualizza informazioni sul visitatore del sito Web corrente:


Un esempio di dati wp_remote_post

Usando le informazioni disponibili dal lato server, siamo in grado di visualizzare l'ID del visitatore, l'indirizzo a cui hanno navigato e la pagina che è stata vista.

Roba facile, giusto?

Per rendere il codice più leggibile, mantenibile e in grado di essere abbinato, ci sono alcune cose che dobbiamo fare. Ma prima, se sei arrivato fin qui, rivedi l'articolo precedente, implementa il codice sorgente, quindi torna a questo post.


Il ricevitore remoto rivisitato

Ricordiamo dal precedente articolo, abbiamo introdotto un file chiamato wp-remote-received.php che era responsabile per l'acquisizione di informazioni da PHP $ _POST raccogliere e costruire una vista più user-friendly di una semplice copia dei dati.

Nello specifico, ecco il codice con cui stavamo lavorando:

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

Ora puoi salvare o ignorare queste informazioni,

";

Ma puliamo un po 'questo. Piuttosto che echeggiare più istruzioni, costruiamo una singola stringa di HTML e restituiscile. Inoltre, forniremo alcuni elementi aggiuntivi e nomi di classe che renderanno più semplice l'accesso tramite CSS:

 '; $ html. = '

I dati del post

'; $ html. = '
    '; foreach ($ _POST come $ chiave => valore $) $ html. = '
  • '. $ chiave. ':'. $ valore. '
  • '; // end foreach $ html. = '
'; $ html. = '
'; // Infine, richiama l'HTML nel richiedente echo $ html;

Niente di troppo complicato. In breve, abbiamo aggiunto un wrapper con un ID univoco, quindi abbiamo inserito tutto all'interno di detto wrapper. Abbiamo anche rimosso la frase sull'opportunità o meno di salvare le informazioni.

Visualizza la pagina nel tuo browser per ricontrollare tutte le cose allo stesso modo. A questo punto, non ci dovrebbe essere alcuna differenza dallo screenshot qui sopra.

Se è così, rivedi il tuo codice.


Aggiungi un po 'di stile

Prima di passare alla serializzazione di queste informazioni, continuiamo con lo styling delle informazioni fornite dal ricevitore.

Per farlo, creiamo a css directory nella radice della directory dei plugin. Creeremo anche un Di meno sottodirectory in cui risiede il nostro plugin LESS. Chiamerò il file display.less dal momento che è abituato a, sai, stile il display :).


Preparare la directory MENO

Successivamente, aggiungeremo l'intera directory del plugin a CodeKit. Se non hai familiarità con come farlo, ti preghiamo di rivedere questa serie.

A questo punto, siamo pronti a scrivere un po 'di MENO per dare al nostro plugin una presentazione leggermente migliore.

Aggiungi il seguente codice al tuo file LESS:

 # wp-remote-post-example-container background: # f7f5e7; border: 1px solid # ac0404; imbottitura: 20px; h4 margine: 0;  // h4 ul li list-style-type: circle;  // li // ul // / # wp-remote-post-example-container

CodeKit (o il compilatore LESS se si sceglie di seguire quella rotta) dovrebbe generare il CSS corretto. Successivamente, dobbiamo istruire il nostro plugin per caricare il nuovo file CSS. Per fare ciò, aggiungi la seguente riga di codice al tuo costruttore:

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

Quindi, aggiungi la seguente funzione alla tua classe:

 funzione pubblica add_style_sheet () wp_enqueue_style ('wp-remote-post-example-style', plugins_url ('wp-remote-post-example / css / display.css'));  // end add_style_seet

Infine, ricarica un singolo post e la tua pagina dovrebbe apparire così:

Esempio di post remoto WP con stile

Sembra abbastanza buono, giusto? Certo, puoi personalizzarlo come preferisci, ma questo è l'esempio con cui stiamo andando per gli scopi di questo articolo.


Salvataggio dei dati del post

Finalmente, siamo pronti per davvero fare qualcosa con questi dati.

Ora, definiremo una funzione che accetta una risposta dal wp-remote-receiver.php e in realtà salvarlo nei metadati del post, ma solo se non esiste già.

In particolare, ecco cosa faremo:

  • Utilizzare l'ID univoco come chiave
  • Se l'indirizzo esiste per l'ID univoco, non faremo nulla
  • Altrimenti, archiviamo anche l'indirizzo e la pagina che è stata visualizzata

A tal fine, per prima cosa definiamo una funzione che farà esattamente questo. Si noti che accetterà un ID univoco che corrisponderà all'indirizzo IP che vediamo sopra, così come l'URL del sito e l'URL della pagina.

 funzione privata 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); add_post_meta (get_the_ID (), 'site_url', $ site_url); add_post_meta (get_the_ID (), 'page_url', $ page_url); // end if

In base ai requisiti elencati sopra la funzione, stiamo salvando i dati per questo post se non esiste attualmente nulla per l'indirizzo IP specificato.

A questo punto, dobbiamo solo apportare una piccola modifica al nostro get_post_response funzione. Aggiorna il condizionale in modo che invochi la funzione che abbiamo definito sopra:

 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. = '
'; $ this-> save_post_data ($ unique_id, $ site_url, $ page_url);

E questo è tutto!


Conclusione

Il plugin finale è disponibile per la revisione e per il download su GitHub. Include anche la documentazione per ogni funzione inclusa nel plug-in e un README in modo da poter seguire tutto ciò che è stato incluso qui.

Nota che se sei interessato agli argomenti wp_remote_post accetta, rivedi l'articolo precedente di cui abbiamo parlato di questo quando parliamo wp_remote_get.

Infine, questo non fa altro che scalfire la superficie di ciò che è possibile con l'API HTTP. Speriamo che questa serie abbia contribuito a fornire una solida introduzione all'API e ha contribuito a spianare la strada per il futuro lavoro con l'API.