Affichage des informations d'un plugin WordPress.org sur votre site Web

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..


Commencer

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:

  • Deux façons de développer des plugins WordPress: Programmation fonctionnelle
  • Deux façons de développer des plugins WordPress: Programmation orientée objet

Que faisons-nous?

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.

Création de la base de plugin

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:

 

Qu'avons-nous fait?

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.


Configuration du shortcode

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.

Traitement du Shortcode avec 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);

Stockage des données de plug-in en transitoires

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".

Pourquoi traverser tout cela?

  • Pour enregistrer les informations sur chaque plugin séparément
  • Faire moins de demandes à WordPress.org
  • Pour charger des données plus rapidement en les servant directement depuis votre propre site web

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:

  1. Nous nous sommes connectés à WordPress.org et avons demandé les informations du plugin. La demande est ensuite enregistrée dans une variable nommée $ mpi_info
  2. Nous vérifions ensuite les erreurs pour nous assurer que les données ont été renvoyées sans erreur.
  3. Enfin, nous avons créé un nouveau transitoire avec une date d'expiration d'une heure.

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.

Afficher les informations du plugin

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; 

Emballer

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


Le mettre en action

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.

Exemple de code court pour afficher d'autres informations sur un plugin

En remplaçant la valeur de l'attribut "field", vous pouvez afficher différentes informations telles que:

  • Nom du plugin: [mpi slug = "my-plugin-information" field = "name"]
  • Version du plugin: [mpi slug = "my-plugin-information" field = "version"]
  • Plugin Slug: [mpi slug = "my-plugin-information" field = "slug"]
  • Plugin Author (retourne un nom et un lien): [mpi slug = "my-plugin-information" field = "author"]
  • Profil d'auteur (renvoie l'adresse du profil): [mpi slug = "my-plugin-information" field = "author_profile"]
  • Dernière mise à jour: [mpi slug = "my-plugin-information" field = "last_updated"]
  • Lien de téléchargement: [mpi slug = "my-plugin-information" field = "download_link"]

Améliorations

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.


Quoi ensuite?

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.