Construire le plugin de plugins favoris

Maintenant qu'il est possible de faire des favoris sur WordPress.org, ne serait-il pas formidable de pouvoir rendre vos favoris disponibles pour une installation rapide à partir du tableau de bord WordPress? Construisons un plugin pour le faire!


Trouver vos plugins préférés

La plupart d'entre nous qui utilisons WordPress avons, à un moment ou à un autre, parcouru le répertoire de plugins de WordPress.org à la recherche d'un plugin pour ajouter une fonctionnalité particulière à un site Web. Souvent, il y a plus d'une option et il peut prendre un peu de temps pour évaluer celle qui fait le mieux le travail. Peut-être qu'après un certain temps, vous aurez une poignée de plugins à utiliser à chaque installation, et peut-être quelques-uns que vous aimez vraiment pour des tâches spécifiques. Comment gardez-vous une trace d'eux? Est-ce que vous recherchez simplement le répertoire du plugin à chaque fois??

Il n'y a pas si longtemps, la fonctionnalité de favoris était disponible sur WordPress.org. Vous pouvez donc maintenant marquer certains plugins comme «favoris», ce qui vous permet de les retrouver facilement à partir de votre profil. C’est un excellent début pour les suivre..

Encore plus récemment, un nouvel argument a été ajouté à l'API de plugin WordPress.org pour rechercher des plugins favorisés par un utilisateur spécifique. Alors maintenant, il serait possible d'écrire un plugin pour apporter cette fonctionnalité dans le tableau de bord WordPress.

J'ai écrit un plugin appelé 'Favorite Plugins', et je vais vous guider tout au long de sa construction..

Remarque: Cette fonctionnalité fera effectivement partie de WordPress lorsque la version 3.5 sera publiée en décembre. Nous construisons ce plugin comme un exercice de création de plugin et en utilisant l'API du plugin WordPress.org.


Étape 1 Construire la base du plugin

Lors de la création d'un plugin, il est judicieux de planifier les choses avant de trop entrer dans les détails du code. Cela vous permet de rester concentré et vous évite d'écrire des lignes et des lignes de code, pour vous rendre compte que vous avez plus de code que nécessaire et que vous avez trop compliqué les choses..

Alors voici ce que notre plugin va faire:

  • Ajouter un nouvel onglet appelé "Favoris" à l'écran "Installer les plugins" de l'administrateur WordPress
  • Sur le nouvel onglet, nous aurons un formulaire pour saisir le nom d'utilisateur WordPress.org à utiliser.
  • Si nous avons un nom d'utilisateur, nous demandons à WordPress.org les favoris pour cet utilisateur.
  • En dessous du formulaire, nous affichons un tableau montrant tous les plugins préférés de l'utilisateur fourni (s'il y en a).
  • Nous nous souviendrons également du nom d'utilisateur entré pour que tout soit pratique. Après tout, c'est ce que ce plugin est tout au sujet!

Maintenant, mettons nos dossiers en ordre. Créez vous-même un répertoire sous / wp-content / plugins / appelé wptuts-favorite-plugins. Dans ce nouveau répertoire, créez vous-même un fichier appelé wptuts-favorite-plugins.php. Ensuite, ouvrez le fichier et, comme toujours lors du développement d'un plugin, ajoutez l'en-tête du plugin comme suit:

   

Nous allons maintenant créer la classe et les stubs pour les méthodes que nous allons utiliser dans ce plugin. Nous utilisons une classe pour construire le plug-in afin de pouvoir tirer parti des fonctionnalités fournies par le développement à l'aide de méthodes orientées objet. De plus, toutes nos fonctions sont conservées correctement..

Voici le stub de classe et les méthodes dont nous aurons besoin:

 class Wptuts_Favorite_Plugins public $ username = null; function __construct () // Le constructeur est utilisé pour lancer des choses, car il est exécuté lors de la création de l'objet function add_favorites_tab ($ tabs) // C'est ici que nous avons mis du code pour ajouter un onglet de favoris au. retourne $ tabs;  function get_favorites () // Quelqu'un veut voir ce qu'il y a dans l'onglet Favoris, alors il vaudrait mieux que nous trouvions quelque chose à leur montrer function install_plugins_favorites () // Affiche le formulaire pour accepter le nom d'utilisateur WordPress.org wptuts_execute () if ((float) get_bloginfo ('version') < 3.5 )  // Kick everything into action… $wptuts_favorite_plugins = new Wptuts_Favorite_Plugins();   add_action( 'admin_init', 'wptuts_execute' );

C'est tout! C'est toute la fonctionnalité que nous construisons dans ce thème. Parce que nous construisons pour l'administrateur WordPress, nous essayons de tirer pleinement parti de tout ce qui est fait pour nous..

Notez également que j’ai enveloppé la ligne d’initialisation dans un si déclaration pour empêcher le plugin de fonctionner sur WordPress 3.5+, qui aura de toute façon cette fonctionnalité.


Étape 2 Ajout de l'onglet Favoris

C’est la partie la plus rapide et la plus facile, aussi allons-y d’abord, puis nous pourrons actualiser les progrès accomplis au fur et à mesure que nous progressons..

Tout d’abord, nous devons ajouter le code suivant dans le __construction méthode de notre classe:

 add_filter ('install_plugins_tabs', array ($ this, 'add_favorites_tab'));

Ici on accroche sur WordPress "install_plugins_tab'filtre qui est exactement ce dont nous avons besoin pour ajouter un onglet.

Qu'est-ce que c'est tableau ($ this, 'nom_fonction') faire du code? Comme vous le savez peut-être, lorsqu’on utilise la programmation orientée objet, le $ this mot réservé est utilisé pour faire référence à l'objet actuel. Lorsque vous utilisez des points d'ancrage dans WordPress, le deuxième paramètre peut être une chaîne portant le nom de la fonction à utiliser ou, si vous utilisez un objet, il peut s'agir d'un tableau avec l'objet et la méthode spécifique de l'objet à utiliser..

En savoir plus à ce sujet sous Eviter les collisions de noms de fonctions sur le Codex WordPress.

Ensuite on fait le add_favorites_tab méthode de notre classe se présente comme suit:

 

Cela ajoute simplement un élément à la $ tabs tableau avec une valeur de 'Favoris' à afficher comme texte de tabulation. Si vous accédez maintenant à l'écran "Installer les plugins" de votre administrateur WordPress, en cliquant sur "Plugins" -> "Ajouter nouveau", l'onglet "Favoris" sera ajouté. En cliquant dessus, vous verrez un bel onglet vide. Mettons des trucs dessus.


Étape 3: Mettre la forme dans notre nouvel onglet

Gardez à l’esprit que l’onglet est finalement sur la même page ('install_plugins') que les autres onglets, et cette page n’attend en réalité que quelque chose à faire, selon l’onglet actif. Il a également des crochets qui utilisent le nom de l'onglet, tels que 'install_plugins_pre _ $ tab', et 'install_plugins _ $ tab', les deux que nous allons utiliser.

Cela signifie que l'ajout du formulaire permettant à l'utilisateur de saisir son nom d'utilisateur WordPress.org est également relativement simple. Ajouter cette ligne au __construction méthode de notre classe:

 add_action ('install_plugins_favorites', array ($ this, 'install_plugins_favorites'), 10, 1);

le install_plugins _ $ tab l'action se produit dans le corps de l'onglet et attend deux paramètres. Le deuxième paramètre est pour la page en cours dans paginaton. Nous n'avons pas besoin de pagination pour notre formulaire. Nous fournissons donc la fonction de rappel et la priorité par défaut, puis nous spécifions que nous ne passerons qu'un paramètre..

Maintenant, nous remplissons notre fonction pour sortir le formulaire:

 function install_plugins_favorites () // Affiche le formulaire acceptant le nom d'utilisateur WordPress.org $ this-> nomutilisateur = isset ($ _REQUEST ['utilisateur'])? stripslashes ($ _REQUEST ['user']): $ this-> nom d'utilisateur; ?> 

Tout d’abord, nous définissons le nom d’utilisateur sur celui qui est envoyé via le formulaire, s’il en existe un. Sinon, nous récupérons celui que nous avons déjà (nous le réglerons un peu plus tard dans le tutoriel).

Nous fournissons ensuite un texte expliquant aux utilisateurs à quoi sert ce formulaire. Dans le formulaire, nous avons un champ caché pour la valeur de tabulation. Ainsi, lorsque nous le soumettons, nous revenons au même onglet. Le reste est constitué du champ de saisie, du champ du nom d'utilisateur et du bouton d'envoi.


Étape 4 Nous avons un nom d'utilisateur, obtenons quelques favoris

Les utilisateurs peuvent soumettre un formulaire avec leur nom d'utilisateur maintenant, mais rien ne se passe… nous devons faire une demande à l'API Plugin WordPress.org avec le nom d'utilisateur, puis afficher les résultats..

Encore une fois, nous devons ajouter une ligne à la __construction méthode de notre classe pour ajouter une méthode à une action WordPress. Cette fois c'est le install_plugins_pre _ $ tab hook, qui s'exécute plus tôt dans le traitement de la page. Un bon endroit pour un appel API.

 add_action ('install_plugins_pre_favorites', array ($ this, 'get_favorites'));

Je suppose que si nous appelons cette méthode, nous ferions mieux de lui faire quelque chose d’utile:

 function get_favorites () // Quelqu'un veut voir ce qu'il y a dans l'onglet Favoris, alors il vaudrait mieux que nous obtenions des informations à leur montrer globales $ wp_list_table; $ this-> nom d'utilisateur = isset ($ _REQUEST ['utilisateur'])? stripslashes ($ _REQUEST ['user']): $ this-> nom d'utilisateur; if ($ this-> nom d'utilisateur) $ args = array ('utilisateur' => $ this-> nom d'utilisateur); update_user_meta (get_current_user_id (), 'wporg_favorites', $ this-> nom d'utilisateur); $ api = plugins_api ('query_plugins', $ args); $ wp_list_table-> items = $ api-> plugins; $ wp_list_table-> set_pagination_args (array ('total_items' => $ api-> info ['results'], 'per_page' => 24,));  else $ args = false; 

Cette fonction vérifie également s’il ya un nom d’utilisateur fraîchement soumis. Sinon, il revient à un nom d’utilisateur enregistré. Nous vérifions ensuite si le nom d'utilisateur est vide, car si c'est le cas, il est inutile de faire une demande d'API. Si le nom d'utilisateur n'était pas vide, nous mettons d'abord à jour une méta-valeur utilisateur avec la clé 'wporg_favorites'être le nom d'utilisateur actuel.

Nous avons également défini une variable appelée $ args être un tableau avec une clé 'utilisateur'et une valeur du nom d'utilisateur pour lequel vous souhaitez trouver des favoris. Ceci est passé à la plugins_api () fonction, que nous passons alors essentiellement la valeur de retour de $ wp_list_table, et définir des valeurs d'argument pour cela aussi. Nous avons mis le articles au total et le par page arguments, ce qui suffit pour ce dont nous avons besoin.

Si vous essayez de lancer ceci maintenant, vous verrez que nous avons toujours une page blanche. C'est parce que nous n'avons pas encore indiqué à la page d'afficher le tableau des résultats. Nous obtenons des résultats de l'API, nous ne les affichons pas.

Maintenant, parce que la page 'Install Plugins' est déjà prête et prête à afficher ces résultats, cette partie est extrêmement facile. Il suffit d'ajouter WordPress 'intégré display_plugins_table fonction à la install_plugins _ $ tab action dans notre __construction méthode, comme si:

 add_action ('install_plugins_favorites', 'display_plugins_table');

Voila! Comme par magie, nous avons maintenant un tableau assez impressionnant montrant nos plugins préférés!


Étape 5 Souviens-toi de moi?

La dernière chose à faire est de faire en sorte que le formulaire se souvienne de vous lorsque vous reviendrez plus tard. Pour le moment, vous vous souviendrez que vous vous débrouillerez très bien entre les recherches, mais si vous naviguez en dehors de l'onglet, vous aurez oublié votre mot de passe..

C’est juste une question d’ajouter une petite ligne à la __construction méthode de notre classe:

 $ this-> username = get_user_option ('wporg_favorites');

Tout ce que cette ligne fait, c'est obtenir la valeur de la clé méta de l'utilisateur 'wporg_favorites'et le mettre dans la variable que nous utilisons dans notre objet plugin.

Parce que nous étions encore en train de le sauvegarder, mais que nous ne l’utilisions pas, même le rafraîchissement de l’onglet des favoris utilisera maintenant le dernier nom d’utilisateur que vous avez entré dans le formulaire..

Alors voici ce que la finale __construction méthode devrait maintenant ressembler à:

 function __construct () // Le constructeur est utilisé pour lancer des choses, car il est exécuté lors de la création de l'objet. add_filter ('install_plugins_tabs', array ($ this, 'add_favorites_tab')); add_action ('install_plugins_favorites', array ($ this, 'install_plugins_favorites'), 10, 1); add_action ('install_plugins_pre_favorites', array ($ this, 'get_favorites')); add_action ('install_plugins_favorites', 'display_plugins_table'); $ this-> username = get_user_option ('wporg_favorites'); 

Conclusion

C'était étonnamment facile, non? Nous avons ajouté un tout nouvel onglet, lancé un appel d'API et généré un tableau plein d'informations, mais nous nous sommes beaucoup appuyés sur les fonctionnalités intégrées de WordPress, ce qui nous a certainement fait économiser beaucoup de travail..

Chaque fois que vous travaillez sur des projets WordPress et que vous ajoutez des fonctionnalités d’administrateur, pensez au principe DRY: ne vous répétez pas, ou, d’autre part, ne répétez pas WordPress. Cherchez des occasions de tirer parti de ce que WordPress vous fournit déjà.

Faites-moi savoir ce que vous pensez de ce plugin dans les commentaires. Cette même fonctionnalité arrive dans WordPress dans la version 3.5, pensez-vous que cela ajoute de la valeur à la fonctionnalité de favoriting sur WordPress.org?