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.
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:
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.
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:
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.
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.
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);
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".
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:
$ mpi_info
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.
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;
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
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.
Sostituendo il valore dell'attributo "campo" è possibile visualizzare informazioni diverse come:
[mpi slug = "my-plugin-information" field = "name"]
[mpi slug = "my-plugin-information" field = "version"]
[mpi slug = "my-plugin-information" field = "slug"]
[mpi slug = "my-plugin-information" field = "author"]
[mpi slug = "my-plugin-information" field = "author_profile"]
[mpi slug = "my-plugin-information" field = "last_updated"]
[mpi slug = "my-plugin-information" field = "download_link"]
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.
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.