Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress Plugins
Code

Création d'un système de messagerie WordPress personnalisé, partie 4

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Creating a Custom WordPress Messaging System.
Creating a Custom WordPress Messaging System, Part 3

French (Français) translation by Soule Nassurdine (you can also view the original English article)

Dans cette série, nous avons examiné comment nous pouvons mettre en œuvre un système qui nous permet de définir, par programmation, des messages personnalisés qui s'affichent sur une page d'administration donnée, dans le back-end de WordPress.

Si vous avez suivi la série jusqu'à présent, alors vous savez :

  • Nous avons posé les bases pour le plugin qui est utilisé tout au long de cette série, et l'avons même développé un peu plus.
  • Nous avons défini et utilisé un hook personnalisé que nous pouvons utiliser pour afficher les messages de réglages.
  • Nous avons ajouté la prise en charge des messages de réussite, d'avertissement et d'erreur qui peuvent être affichés en haut d'une page de réglages donnée.

Comme mentionné dans le tutoriel précédent :

Mais si vous avez lu un de mes tutoriels précédents, vous savez que je ne suis pas un fan de codes dupliqués. Ni ne suis fan des classes qui font beaucoup de choses. Et, malheureusement, c'est exactement ce que nous faisons ici.

Et nous allons aborder cela dans ce dernier tutoriel. À la fin, nous aurons une solution refactorisée complète qui utilise des principes orientés objet intermédiaires comme l'héritage. Nous aurons également quelques méthodes que nous pouvons utiliser par programmation ou qui peuvent être enregistrées avec le système de hook WordPress.

Commencer à la fin

À ce stade, vous devez savoir exactement ce dont vous avez besoin dans votre environnement de développement local. Plus précisément, vous devriez avoir ce qui suit :

  • PHP 5.6.25 et MySQL 5.6.28
  • Apache ou Nginx
  • WordPress 4.6.1
  • Votre IDE ou votre éditeur préféré

Je recommande également la version la plus récente du code source car elle vous permettra de parcourir toutes les modifications que nous allons faire. Si vous ne l'avez pas, ce n'est pas grave, mais je recommande de relire les tutoriels précédents avant d'aller plus loin.

Dans le tutoriel précédent

Comme vous vous en souvenez peut-être (ou l'avez constaté par le commentaire ci-dessus), le tutoriel précédent nous a donné une seule classe qui faisait trop de travail.

Une façon de le savoir est que si vous deviez décrire ce que la classe faisait, vous ne seriez pas en mesure de ne donner qu’une seule réponse. Au lieu de cela, vous diriez qu'elle était responsable de la manipulation des messages de succès, des messages d'avertissement, des messages d'erreur et les affiche tous indépendamment les uns des autres.

Et bien que vous puissiez expliquer qu'elle "gérait des messages personnalisés", vous ne décririez pas nécessairement à quel point la classe était détaillée. C'est ce que nous espérons résoudre dans ce tutoriel.

Dans le tutoriel final

Nous allons plus précisément examiner ce qui suit :

  • Suppression de la vieille classe de messagerie réglages
  • Ajout d'une nouvelle classe plus générique message de réglages
  • Ajout une classe de messagerie réglages avec laquelle communiquer
  • Introduction de méthodes que nous pouvons utiliser indépendamment de WordPress
  • Rationalisation de la façon dont WordPress affiche les messages

Nous avons du pain sur la planche, alors allons-y et commençons avec tout ce qui précède.

Refactoriser notre travail

Quand il s'agit de refactoriser notre travail, il est utile de savoir exactement ce que nous voulons faire. Dans notre cas, nous reconnaissons que nous avons beaucoup de code en double qui pourrait être condensé.

En outre, nous avons trois types différents de messages gérés exactement de la même manière sauf pour la façon dont ils sont affichés. Et dans ce cas, c'est un problème des attributs de classe HTML.

Ainsi, nous pouvons généraliser ce code pour nous concentrer sur un type spécifique, et nous pouvons consolider beaucoup des méthodes pour ajouter des messages de réussite ou pour récupérer des messages d'erreur en généralisant une méthode pour reconnaître ledit type.

Nous le ferons en fin de compte. Mais d'abord, un peu de ménage.

1. Supprimez la Vieille Messagerie Réglages

Dans les tutoriels précédents, nous avons travaillé avec une classe appelée Settings_Messenger. Jusqu'à ce point, elle a servi son but, mais nous allons refactoriser cette classe tout au long du reste de ce tutoriel.

Quand il s'agit de ce type de réusinage de code, il est facile de vouloir simplement supprimer la classe et recommencer.  Il y a des moments où cela est approprié, mais ce n'est pas le cas ici. Au lieu de cela, nous allons prendre cette classe et refactoriser ce qui est déjà là. Au lieu de cela, nous allons prendre cette classe et refactoriser ce qui est déjà là.

Tout cela pour dire, ne supprimez pas le fichier et commencez avec un nouveau. Au lieu de cela, suivez ce que nous faisons tout au long de ce tutoriel.

2. Une nouvelle classe messages de réglages

Tout d'abord, introduisons une classe Settings_Message. Cela représente tout type de message de réglages avec lequel nous allons écrire. Autrement dit, il gérera les messages de succès, les messages d'erreur et les messages d'avertissement.

Pour ce faire, nous allons définir la classe, introduire une propriété unique, puis nous l'instancierons dans le constructeur. Regardez ce code, et je vais expliquer un peu plus ci-dessous :

Notez que nous avons créé un attribut privé, $messages. Lorsque la classe est instanciée, nous créons un tableau multidimensionnel. Chaque index, identifié par success, error ou warning, se réfère à son propre tableau dans lequel nous stockerons les messages correspondants.

Ensuite, nous devons être en mesure d'ajouter un message, d'obtenir un message et d'obtenir tous les messages. Je vais discuter de chacun de ces éléments plus en détail momentanément.

Ajout de messages

Tout d'abord, voyons comment nous ajoutons des messages :

Ce message prend d'abord la chaîne de caractère entrante et nettoie les données. Ensuite, il vérifie s'il existe déjà dans les messages de réussite. Si oui, il retourne tout simplement. Après tout, nous ne voulons pas de messages en double.

Sinon, il ajoute le message à la collection.

Recevoir des messages

Récupérer des messages se présente sous deux formes :

  1. Afficher les messages individuels par type
  2. Afficher les messages dans l'affichage de la page d'administration (complets avec le nettoyage HTML, etc.)

Rappelez-vous, il y a des moments où nous pourrions vouloir afficher des messages d'avertissement seulement. D'autres fois, nous pourrions vouloir afficher tous les messages. Puisqu'il y a deux façons de faire cela, nous pouvons en tirer profit de l'une et ensuite en profiter dans une autre fonction.

Ça parait déroutant ? Suivez-moi et je vous expliquerai tout. La première partie sur laquelle nous allons nous concentrer est la façon d'afficher les messages par type (pensez succès, erreur ou avertissement). Voici le code pour faire cela (et il devrait sembler familier) :

Notez ici que nous utilisons une grande partie du même code du tutoriel précédent ; Cependant, nous l'avons généralisé de sorte qu'il regarde le $type entrant et l'applique dynamiquement au balisage.

Cela nous permet d'avoir une seule fonction pour afficher nos messages. Ce n'est pas tout, cependant. Qu'en est-il des fois où nous voulons obtenir tous les messages ? Cela pourrait être pour les afficher sur une page ou de les récupérer, par programmation, pour un autre traitement. Cela pourrait être pour les afficher sur une page ou de les récupérer, par programmation, pour un autre traitement.

Pour ce faire, nous pouvons introduire une autre fonction :

Ce message devrait être assez facile à comprendre. Il passe simplement par tous les messages que nous avons dans notre collection et appelle la fonction get_messages que nous avons décrite ci-dessus.

Ça les affiche toujours tous ensemble (chose dont nous verrons une utilité momentanément dans notre mise en œuvre d'un hook personnalisé). Si vous souhaitez les utiliser dans un autre but, vous pouvez ajouter le résultat dans une chaîne et le retourner à l'appelant, ou effectuer une autre fonction programmatique.

Ce n'est qu'une implémentation.

3. La Messagerie Réglages

C'est tout pour la classe Settings_Message. Mais comment communiquons-nous avec elle ? Bien sûr, nous pouvons lui parler directement, mais s'il y a une classe intermédiaire, nous avons un certain contrôle sur ce qui nous est retourné sans ajouter plus de responsabilités à la classe Settings_Message, n'est-ce pas ?

Arrive, le Settings_Messenger. Cette classe est responsable de nous permettre de lire et d'écrire les messages de réglages. Je pense qu'on pourrait faire en sorte que vous puissiez diviser cela en deux classes par sa responsabilité, car elle lit et écrit, mais, comme un messager qui envoie et reçoit, c'est le but de cette classe.

La configuration initiale de la classe est simple.

  • Le constructeur crée une instance de la classe Settings_Message que nous pouvons utiliser pour envoyer et recevoir des messages.
  • Il associe une méthode à notre hook personnalisé tutsplus_settings_messages que nous avons défini dans un précèdent tutoriel.

Jetez un œil aux deux premières méthodes :

Rappelez-vous, plus tôt dans ce tutoriel, nous avons le hook défini dans notre vue, qui peut être trouvé dans settings.php. Pour être complet, il est listé ici :

Notez, cependant, que ce hook particulier profite de la méthode get_all_messages que nous examinerons dans un instant.  Il n'a pas à utiliser cette méthode. Au lieu de cela, il pourrait être utilisé pour simplement afficher des messages de succès ou toutes autres méthodes que vous souhaitez utiliser.

Ajout de messages

La création des fonctions d'ajout de messages est simple car ces fonctions requièrent un type et le message lui-même. Souvenez-vous, le Settings_Message prend soin de nettoyer les informations afin que nous puissions simplement transmettre les messages entrants.

Voir ci-dessous où nous ajoutons des messages de réussite, d'avertissement et d’erreur :

C'est facile, n'est-ce pas ?

Recevoir les messages

Récupérer les messages n'est pas très différent sauf que nous devons simplement fournir le type de messages que nous voulons récupérer :

Fait et fait, pas vrai ?

Mais avez-vous remarqué cela ?

Notez que les messages ci-dessus se réfèrent avant tout à deux autres méthodes que nous n'avons pas encore couvertes. Ce sont des messages privés qui nous aident à simplifier les appels ci-dessus.

Voyez les méthodes privées suivantes qui sont à la fois responsable de l'ajout et la récupération des messages directement à partir de l'instance Settings_Message maintenue sur l'objet messagerie :

Et voilà qui complète la nouvelle classe Settings_Messenger. Tout cela est beaucoup plus simple, n'est-ce pas ?

Démarrage du plugin

Cela soulève néanmoins la question : comment démarrer le plugin maintenant que nous avons eu tous ces changements ?

Voyez toute la fonction ci-dessous :

Et c'est tout.

Quelques points à noter :

  • Si vous n'appelez pas init sur Settings_Messenger, vous n'avez pas à vous soucier d'afficher des messages dans votre page de réglages.
  • Le code ajoute des messages à Settings_Messenger, mais il n'en récupère en fait aucun parce que j'utilise la méthode init.
  • Si vous souhaitez récupérer les messages, vous pouvez utiliser les méthodes décrites ci-dessus.

C'est tout pour le réusinage du code. Cela ne fonctionnera pas exactement par défaut car il y a encore un certain code nécessaire pour charger tous les fichiers PHP nécessaires pour que le plugin fonctionne ; Cependant, le code ci-dessus se concentre sur le réusinage qui est le but de ce tutoriel entier.

Conclusion

Pour obtenir une version complète de ce tutoriel et du code source complet qui fonctionne par défaut, téléchargez le code source joint à ce post sur la barre latérale droite.

J'espère qu'en lisant ce matériel vous avez acquis un certain nombre de nouvelles compétences et façons d'aborder le développement de WordPress. En examinant la série, nous avons beaucoup couvert :

  • Menus personnalisés
  • Introduction de pages d'administration
  • Les différents types de message
  • Définir et utiliser des hooks personnalisés
  • Et réusinage de code orienté objet

Comme d'habitude, Je suis également toujours heureux de répondre aux questions via les commentaires, et vous êtes également libre de consulter mon blog et de me suivre sur Twitter. Je parle habituellement du développement de logiciels dans WordPress aussi bien que de sujets tangentiels. Si vous êtes intéressé par plus de développement WordPress, n'oubliez pas de consulter mes précédentes séries et tutoriels, ainsi que les autres documents WordPress que nous avons ici sur Envato Tuts +.

Ressources

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.