Visualizzazione delle informazioni di un plugin WordPress.org sul tuo sito web

Nella prima parte di questo articolo, abbiamo discusso su come utilizzare le funzioni integrate per comunicare con WordPress.org e recuperare i dettagli del plugin.

In questo tutorial metteremo in pratica la teoria per creare un semplice plug-in che ci consentirà di visualizzare i dettagli di qualsiasi plug-in ospitato su WordPress.org sul nostro sito Web WordPress utilizzando gli shortcode.


Iniziare

Suppongo che tu sia uno sviluppatore di plugin e conosca le basi, ma in caso di dubbio, ti suggerisco di leggere i seguenti due articoli:

  • Due modi per sviluppare plugin WordPress: programmazione funzionale
  • Due modi per sviluppare plugin WordPress: programmazione orientata agli oggetti

Cosa stiamo facendo?

Con questo plugin vogliamo creare uno shortcode come [mpi slug = "my-plugin-information" field = "version"] che può accettare due attributi: "slug" e "field", quindi in base a ciò recuperiamo e visualizziamo le informazioni di qualsiasi plugin ospitato nel repository di WordPress.org.

Creazione della base del plugin

Iniziamo creando una cartella denominata my-plugin-informazioni nel tuo wp-content / plugins directory. Al suo interno, crea un file chiamato my-plugin-info.php e incolla il seguente codice in esso:

 

Cosa abbiamo fatto?

Nel codice precedente, abbiamo creato e inizializzato la nostra classe di plugin DOT_MyPluginInfo. Al suo interno ci sono i blocchi generali di qualsiasi plugin, per esempio il __costruire() metodo.

La funzione init_my_plugin_info è agganciato al dentro azione in modo che venga eseguito dopo che WordPress è stato caricato ma prima che vengano inviate le intestazioni. All'interno della funzione init_my_plugin_info abbiamo registrato il nostro shortcode usando il add_shortcode funzione.

Nota: per saperne di più add_shortcode, controlla il codice.

Il plug-in di cui sopra ora ha abbastanza codice per essere riconosciuto da WordPress dal dashboard del plugin. Se hai già creato un file come da istruzioni puoi ora visitare il file plugin pagina e attiva questo plugin.


Impostazione dello Shortcode

Dal momento che vogliamo la flessibilità di scegliere quali informazioni vogliamo visualizzare su un plugin, abbiamo creato uno shortcode con due attributi. Verrà utilizzato il primo "slug" per specificare quali dati del plug-in devono essere recuperati. Il secondo attributo "campo" sarà usato per specificare quale pezzo esatto di informazione su un plugin dobbiamo mostrare.

Quindi, per esempio, se vogliamo mostrare il numero di volte in cui questo plugin è stato scaricato, dobbiamo semplicemente aggiungere il testo sotto l'editor di post e il risultato finale dovrebbe essere qualcosa come "Scaricato 100 volte".

 Tempo scaricato [mpi slug = "my-plugin-information" = "scaricato"].

utilizzando add_shortcode abbiamo registrato il nostro shortcode in modo tale che ogni volta che si trova lo shortcode nel contenuto del post, la funzione render_mpi () sarà chiamato per elaborarlo. D'ora in poi, il resto del codice verrà inserito all'interno di questa funzione per gestire il nostro shortcode.

Elaborazione dello Shortcode con render_mpi ()

Per visualizzare le informazioni sui plugin, dobbiamo prima elaborare lo shortcode per ottenere gli attributi. Aggiungi il codice qui sotto all'interno del render_api funzione:

 // ottiene la nostra variabile da $ atts extract (shortcode_atts (array ('slug' => ", // pippo è un valore predefinito 'campo' =>"), $ atts));

Questo estrae i due attributi "slug" e "field" se vengono forniti. Prima di andare avanti, prima controlliamo se esistono valori per "slug" e "field", e se non lo fanno, allora smettiamo di elaborare ulteriormente.

 / ** * Controlla se esiste slug * / if (! $ Slug) return false;  / ** * Verifica se il campo esiste * Valore di ritorno basato sull'attributo campo * / if (! $ Campo) return false;  else  // $ controllo del campo

Il codice sopra controllerà se esiste "slug" e, in caso contrario, restituirà false. Se "slug" esiste, procederà a controllare l'attributo "campo". Dal momento che stiamo creando solo uno shortcode per visualizzare una specifica informazione su un plugin, controllando se entrambi gli attributi esistono prima dell'elaborazione ulteriori salverà le chiamate non necessarie all'API dei plugin di WordPress.org.

Ora se i valori per gli attributi "slug" e "field" sono forniti nel shortcode, procediamo in avanti sanitizzando prima entrambi i valori.

 // Disinstalla attributi $ slug = sanitize_title ($ slug); $ campo = sanitize_title ($ campo);

Memorizzazione dei dati del plugin nei transitori

Per evitare di inviare una richiesta a WordPress.org ogni volta che viene caricata una pagina contenente questo shortcode, è necessario salvare localmente le informazioni del plugin. In questo modo, se hai inserito più di uno shortcode per visualizzare diversi dettagli dello stesso plugin, possiamo accelerare il processo visualizzando i dati dalle informazioni salvate localmente sul tuo sito web.

Ma cosa succede se il plugin si aggiorna e continuiamo a mostrare vecchi dati? Beh, per risolverlo, l'opzione più rapida è quella di salvare i dati dei singoli plugin utilizzando l'API Transients e impostando una data di scadenza sui dati.

Un altro problema sarebbe se si hanno codici brevi che stanno recuperando dati su diversi plugin. Se li archiviamo con un solo nome transitorio, il risultato potrebbe essere inaspettato. Per affrontarlo, diamo un nome univoco ai transienti salvati usando l'attributo "slug".

Perché passare attraverso tutto questo?

  • Per salvare separatamente le informazioni su ciascun plugin
  • Per fare meno richieste a WordPress.org
  • Per caricare i dati più velocemente servendoli direttamente dal tuo sito web

Procediamo creando prima una variabile $ mpi_transient_name per salvare nomi transitori unici basati sull'attributo "slug".

 // Crea un array vuoto con il nome della variabile diverso in base al plugin slug $ mpi_transient_name = 'mpi-'. $ Slug;

Quindi controlliamo, se il transitorio esiste già:

 / ** * Verifica se esiste un transitorio con i dati del plug-in * / $ mpi_info = get_transient ($ mpi_transient_name);

Se il transitorio esiste, procediamo quindi a visualizzare i dati basati sull'attributo "campo" o altrimenti usiamo plugins_api connettersi a WordPress.org e richiedere le informazioni del plugin.

 if (vuoto ($ mpi_info)) / ** * Connetti a WordPress.org usando plugins_api * Informazioni su plugins_api - * http://wp.tutsplus.com/tutorials/plugins/communicating-with-the-wordpress-org-plugin -api / * / require_once (ABSPATH. 'wp-admin / includes / plugin-install.php'); $ mpi_info = plugins_api ('plugin_information', array ('slug' => $ slug)); // Controlla gli errori con i dati restituiti da WordPress.org se (! $ Mpi_info o is_wp_error ($ mpi_info)) return false;  // Imposta un transitorio con i dati del plugin // Usa l'API delle opzioni con cron job update automatico nella prossima versione. set_transient ($ mpi_transient_name, $ mpi_info, 1 * HOUR_IN_SECONDS); 

Nel codice sopra, abbiamo fatto tre cose:

  1. Ci siamo collegati a WordPress.org e richiesto le informazioni del plugin. La richiesta viene quindi salvata in una variabile denominata $ mpi_info
  2. Facciamo quindi il controllo degli errori per garantire che i dati siano stati restituiti senza errori
  3. Infine abbiamo creato un nuovo transitorio con una data di scadenza di un'ora

Ora se il valore dell'attributo slug era "my-plugin-informazioni"allora il nome del transitorio che memorizza le informazioni del plugin sarebbe"mpi-my-plugin-informazioni".

Nota: per saperne di più plugins_api fare riferimento al primo articolo di questa serie, mostrato nella parte superiore di questo post.

Visualizzazione delle informazioni sul plugin

L'ultimo passaggio consiste nel restituire informazioni specifiche in base al valore dell'attributo "campo". Per fare ciò, semplicemente usiamo assegni individuali.

 if ($ field == "scaricato") return $ mpi_info-> scaricato;  if ($ field == "name") return $ mpi_info-> name;  if ($ field == "slug") return $ mpi_info-> slug;  if ($ field == "version") return $ mpi_info-> version;  if ($ field == "author") return $ mpi_info-> author;  if ($ field == "author_profile") return $ mpi_info-> author_profile;  if ($ field == "last_updated") return $ mpi_info-> last_updated;  if ($ field == "download_link") return $ mpi_info-> download_link; 

Avvolgendo

Codice completo del plugin:

 ", // foo è un valore predefinito 'campo' =>"), $ atts)); / ** * Controlla se esiste slug * / if (! $ Slug) return false;  / ** * Verifica se il campo esiste * Valore di ritorno basato sull'attributo campo * / if (! $ Campo) return false;  else // Sanitize attributes $ slug = sanitize_title ($ slug); $ campo = sanitize_title ($ campo); // Crea un array vuoto con nome variabile diverso in base al plugin slug $ mpi_transient_name = 'mpi'. $ Slug; / ** * Verifica se esiste un transitorio con i dati del plug-in * / $ mpi_info = get_transient ($ mpi_transient_name); if (vuoto ($ mpi_info)) / ** * Connetti a WordPress.org usando plugins_api * Informazioni su plugins_api - * http://wp.tutsplus.com/tutorials/plugins/communicating-with-the-wordpress-org-plugin -api / * / require_once (ABSPATH. 'wp-admin / includes / plugin-install.php'); $ mpi_info = plugins_api ('plugin_information', array ('slug' => $ slug)); // Controlla gli errori con i dati restituiti da WordPress.org se (! $ Mpi_info o is_wp_error ($ mpi_info)) return false;  // Imposta un transitorio con i dati del plugin // Usa l'API delle opzioni con cron job update automatico nella prossima versione. set_transient ($ mpi_transient_name, $ mpi_info, 1 * HOUR_IN_SECONDS);  if ($ field == "scaricato") return $ mpi_info-> scaricato;  if ($ field == "name") return $ mpi_info-> name;  if ($ field == "slug") return $ mpi_info-> slug;  if ($ field == "version") return $ mpi_info-> version;  if ($ field == "author") return $ mpi_info-> author;  if ($ field == "author_profile") return $ mpi_info-> author_profile;  if ($ field == "last_updated") return $ mpi_info-> last_updated;  if ($ field == "download_link") return $ mpi_info-> download_link;  // $ field check // render_mpi () // end classe new DOT_MyPluginInfo (); ?>

Questo codice plugin è disponibile su GitHub e puoi anche scaricarlo da WordPress.org


Mettendolo in azione

Ora puoi semplicemente andare al tuo editor di post e aggiungere uno shortcode come:

 Tempo scaricato [mpi slug = "my-plugin-information" = "scaricato"].

E mostrerà:

 Scaricato 10 volte.

Esempio Shortcode per visualizzare altre informazioni su un plugin

Sostituendo il valore dell'attributo "campo" è possibile visualizzare informazioni diverse come:

  • Nome del plugin: [mpi slug = "my-plugin-information" field = "name"]
  • Versione plugin: [mpi slug = "my-plugin-information" field = "version"]
  • Plugin Slug: [mpi slug = "my-plugin-information" field = "slug"]
  • Autore del plugin (restituisce un nome e un link): [mpi slug = "my-plugin-information" field = "author"]
  • Profilo dell'autore (restituisce l'indirizzo del profilo): [mpi slug = "my-plugin-information" field = "author_profile"]
  • Ultimo aggiornamento: [mpi slug = "my-plugin-information" field = "last_updated"]
  • Link per scaricare: [mpi slug = "my-plugin-information" field = "download_link"]

miglioramenti

Per mantenere le cose semplici, ho usato i transienti per salvare le informazioni sui plugin. I transienti, tuttavia, non sono mai stati concepiti per il salvataggio di dati importanti. Un metodo alternativo sarebbe quello di salvare i dati del plugin usando l'API Options, add_options (), o come post meta e quindi pianificare un'attività cron per aggiornare i dati ogni ora.


Cosa Avanti?

utilizzando plugins_api abbiamo dimostrato quanto sia facile comunicare e recuperare le informazioni di qualsiasi plugin ospitato su WordPress.org.

Potresti anche voler guardare altri plugin come Info Plugin (che usa anche plugins_api, e I Make Plugins, per vedere come hanno realizzato lo stesso compito.