Dans la première partie de cet article, nous avons expliqué comment utiliser les fonctions intégrées pour communiquer avec WordPress.org et récupérer les détails du plug-in..
Dans ce tutoriel, nous allons mettre la théorie en pratique pour créer un plugin simple qui nous permettra d'afficher les détails de tout plugin hébergé sur WordPress.org sur notre site Web WordPress à l'aide de codes courts..
Je suppose que vous êtes un développeur de plugins et que vous connaissez les bases, mais en cas de doute, je vous suggère de lire les deux articles suivants:
Avec ce plugin, nous voulons créer un shortcode tel que [mpi slug = "my-plugin-information" field = "version"]
qui peut accepter deux attributs: "slug" et "field", puis sur cette base, nous récupérons et affichons les informations de tout plugin hébergé dans le référentiel WordPress.org.
Commençons par créer un dossier nommé my-plugin-information dans ton wp-content / plugins annuaire. À l'intérieur, créez un fichier nommé my-plugin-info.php et collez-y le code ci-dessous:
Dans le code ci-dessus, nous avons créé et initialisé notre classe de plugin DOT_MyPluginInfo
. À l'intérieur se trouvent les blocs généraux de tout plugin, par exemple le __construction()
méthode.
La fonction init_my_plugin_info
est accroché au init
action afin qu'il s'exécute après le chargement de WordPress mais avant l'envoi des en-têtes. À l'intérieur de la fonction init_my_plugin_info
nous avons enregistré notre shortcode en utilisant le add_shortcode
une fonction.
Remarque: pour en savoir plus sur add_shortcode
, consultez le Codex.
Le plugin ci-dessus a maintenant assez de code pour être reconnu par WordPress à partir du tableau de bord du plugin. Si vous avez déjà créé un fichier comme indiqué, vous pouvez maintenant visiter le Plugins page et activer ce plugin.
Puisque nous voulons avoir la possibilité de choisir quelles informations nous voulons afficher sur un plugin, nous avons créé un shortcode avec deux attributs. Le premier appelé "slug" sera utilisé pour spécifier quelles données du plugin doivent être récupérées. Le deuxième attribut "champ" sera utilisé pour spécifier quelle information exacte sur un plugin nous devons afficher.
Ainsi, par exemple, si nous voulons afficher le nombre de fois que ce plugin a été téléchargé, nous devons simplement ajouter le texte sous l'éditeur de publication et le résultat final devrait ressembler à "Téléchargé 100 fois".
Téléchargé [mpi slug = "my-plugin-information" field = "téléchargé"] fois.
En utilisant add_shortcode
nous avons enregistré notre shortcode afin que chaque fois que le shortcode se trouve dans le contenu du message, la fonction render_mpi ()
sera appelé à le traiter. A partir de maintenant, le reste du code sera placé dans cette fonction pour gérer notre shortcode.
render_mpi ()
Pour afficher les informations du plugin, nous devons d’abord traiter le shortcode pour obtenir les attributs. Ajoutez le code ci-dessous à l'intérieur du render_api
une fonction:
// récupère notre variable à partir de $ atts extract (shortcode_atts (array ('slug' => ", // foo est une valeur par défaut 'field' =>"), $ atts));
Ceci extrait les deux attributs "slug" et "field" s'ils sont fournis. Avant de continuer, nous vérifions d’abord si les valeurs pour "slug" et "field" existent, et si ce n’est pas le cas, nous arrêtons le traitement..
/ ** * Vérifie si le slug existe * / if (! $ Slug) return false; / ** * Vérifier si le champ existe * Renvoyer la valeur en fonction de l'attribut du champ * / if (! $ Field) return false; else // vérification du champ $
Le code ci-dessus vérifiera si "slug" existe, et s'il ne le fait pas, il retournera false. Si "slug" existe, il procédera à la vérification de l'attribut "field". Étant donné que nous créons uniquement un code abrégé pour afficher une information spécifique sur un plugin, vérifier si les deux attributs existent avant le traitement ultérieur économisera les appels inutiles à l'API de plugins WordPress.org.
Maintenant, si les valeurs pour les attributs "slug" et "field" sont fournies dans le shortcode, nous procédons ensuite en nettoyant les deux valeurs.
// Désinfecter les attributs $ slug = sanitize_title ($ slug); $ field = sanitize_title ($ field);
Pour éviter d'envoyer une demande à WordPress.org chaque fois qu'une page contenant ce code court est chargée, nous devons enregistrer les informations du plug-in localement. De cette façon, si vous avez placé plus d'un shortcode pour afficher différents détails du même plugin, nous pouvons alors accélérer le processus en affichant des données à partir des informations enregistrées localement sur votre site Web..
Mais que se passe-t-il si le plugin se met à jour et que nous continuons à afficher les anciennes données? Pour résoudre ce problème, l'option la plus rapide possible consiste à enregistrer nos données de plug-in individuelles à l'aide de l'API Transients et à définir une date d'expiration pour les données..
Un autre problème pourrait être si vous avez des codes courts qui récupèrent des données sur différents plugins. Si nous les stockons avec un seul nom transitoire, le résultat pourrait être inattendu. Pour résoudre ce problème, nous attribuons un nom unique aux transitoires enregistrés en utilisant l'attribut "slug".
Commençons par créer d'abord une variable $ mpi_transient_name
enregistrer des noms transitoires uniques en fonction de l'attribut "slug".
// Crée un tableau vide avec un nom de variable différent basé sur le plugin slug $ mpi_transient_name = 'mpi-'. $ limace;
Ensuite, nous vérifions si le transitoire existe déjà:
/ ** * Vérifier si des données transitoires existent avec les données du plugin * / $ mpi_info = get_transient ($ mpi_transient_name);
Si le transitoire existe, nous procédons ensuite à l’affichage des données en fonction de l’attribut "field" ou bien nous utilisons plugins_api
se connecter à WordPress.org et demander les informations du plugin.
if (empty ($ mpi_info)) / ** * Connectez-vous à WordPress.org à l'aide de plugins_api * À propos de 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)); // Vérifie les erreurs avec les données renvoyées par WordPress.org si (! $ Mpi_info ou is_wp_error ($ mpi_info)) return false; // Définir un transitoire avec les données du plugin // Utiliser l'API Options avec le travail périodique de mise à jour automatique dans la prochaine version. set_transient ($ mpi_transient_name, $ mpi_info, 1 * HOUR_IN_SECONDS);
Dans le code ci-dessus, nous avons fait trois choses:
$ mpi_info
Maintenant, si la valeur de l'attribut slug était "my-plugin-information
"alors le nom du transitoire qui stocke les informations du plugin serait"mpi-my-plugin-information
".
Remarque: pour en savoir plus sur plugins_api
se référer au premier article de cette série, affiché en haut de cet article.
La dernière étape consiste à renvoyer des informations spécifiques en fonction de la valeur de l'attribut "champ". Pour ce faire, nous utilisons simplement des contrôles individuels.
if ($ field == "téléchargé") return $ mpi_info-> téléchargé; 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;
Code du plugin complet:
", // foo est une valeur par défaut 'champ' =>"), $ atts)); / ** * Vérifie si le slug existe * / if (! $ Slug) return false; / ** * Vérifier si le champ existe * Renvoyer la valeur en fonction de l'attribut du champ * / if (! $ Field) return false; else // Désinfecte les attributs $ slug = sanitize_title ($ slug); $ field = sanitize_title ($ field); // Crée un tableau vide avec un nom de variable différent basé sur le plugin slug $ mpi_transient_name = 'mpi'. $ limace; / ** * Vérifier si des données transitoires existent avec les données du plugin * / $ mpi_info = get_transient ($ mpi_transient_name); if (empty ($ mpi_info)) / ** * Connectez-vous à WordPress.org à l'aide de plugins_api * À propos de 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)); // Vérifie les erreurs avec les données renvoyées par WordPress.org si (! $ Mpi_info ou is_wp_error ($ mpi_info)) return false; // Définir un transitoire avec les données du plugin // Utiliser l'API Options avec le travail périodique de mise à jour automatique dans la prochaine version. set_transient ($ mpi_transient_name, $ mpi_info, 1 * HOUR_IN_SECONDS); if ($ field == "téléchargé") return $ mpi_info-> téléchargé; 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; // $ vérification du champ // render_mpi () // fin de la classe new DOT_MyPluginInfo (); ?>
Ce code de plugin est disponible sur GitHub et vous pouvez également le télécharger à partir de WordPress.org
Maintenant, vous pouvez simplement aller dans votre éditeur de publication et ajouter un shortcode comme:
Téléchargé [mpi slug = "my-plugin-information" field = "téléchargé"] fois.
Et il affichera:
Téléchargé 10 fois.
En remplaçant la valeur de l'attribut "field", vous pouvez afficher différentes informations telles que:
[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"]
Pour garder les choses simples, j'ai utilisé des transitoires pour sauvegarder les informations de plugin. Cependant, les transitoires n'ont jamais été utilisés pour sauvegarder des données importantes. Une autre méthode serait de sauvegarder les données du plugin en utilisant l’API Options., add_options ()
, ou en tant que méta post, puis planifier une tâche cron pour mettre à jour les données toutes les heures.
En utilisant plugins_api
nous avons démontré à quel point il est facile de communiquer et de récupérer les informations de tout plugin hébergé sur WordPress.org.
Vous voudrez peut-être aussi regarder d’autres plugins tels que Plugin Info (qui utilise aussi plugins_api
, et I Make Plugins, pour voir comment ils ont accompli la même tâche.