Dans cette série, nous avons examiné comment mettre en œuvre un système nous permettant de définir par programme des messages personnalisés à afficher sur une page d'administration donnée dans le back-end WordPress..
Si vous avez suivi la série jusqu'à présent, alors vous savez:
Comme mentionné dans le tutoriel précédent:
Mais si vous avez lu l'un de mes tutoriels précédents, vous savez que je ne suis pas fan des codes dupliqués. Je ne suis pas non plus partisan d'avoir une classe à faire beaucoup de choses. Et, malheureusement, c'est exactement ce que nous faisons ici.
Et nous allons en parler dans ce dernier tutoriel. À la fin, nous aurons une solution refactorisée complète utilisant certains principes intermédiaires orientés objet, tels que l'héritage. Nous aurons également quelques méthodes que nous pouvons utiliser par programme ou qui peuvent être enregistrées avec le système de hook WordPress.
À 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 les éléments suivants:
Je recommande également la version la plus récente du code source, car elle vous permettra de passer en revue tous les changements que nous allons effectuer. Si vous ne l'avez pas, c'est bon, mais je vous recommande de relire les tutoriels précédents avant d'aller plus loin..
Comme vous vous en souviendrez peut-être (ou d'après le commentaire ci-dessus), le didacticiel précédent nous a laissé un seul cours qui faisait trop de travail.
Une façon de le savoir est que si vous décriviez ce que faisait la classe, vous ne pourriez pas donner une seule réponse. Au lieu de cela, vous devez dire qu'il était responsable de la gestion des messages de réussite, des messages d'avertissement, des messages d'erreur et de leur rendu indépendamment.
Et bien que vous puissiez prétendre qu'il s'agissait de "gérer 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.
Plus précisément, nous allons envisager les actions suivantes:
Nous avons du pain sur la planche, alors allons-y et commençons avec tout ce qui précède.
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é.
De plus, nous gérons trois types de messages différents de la même manière, à l’exception de leur rendu. Et dans ce cas, il s'agit d'un problème d'attributs de classe HTML.
Ainsi, nous pouvons généraliser ce code pour se concentrer sur un type, et nous pouvons consolider un grand nombre de méthodes d’ajout de messages de réussite ou de récupération de messages d’erreur en généralisant une méthode permettant de reconnaître ledit message. type.
En fin de compte, nous le ferons. Mais d'abord, un peu de ménage.
Dans les tutoriels précédents, nous avons travaillé avec une classe appelée Settings_Messenger
. Jusqu’à présent, il a atteint son objectif, mais nous allons le refactoriser dans la suite du reste de ce didacticiel..
En ce qui concerne ce type de refactoring, 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 l'un d'entre eux. Au lieu de cela, nous allons prendre ce cours et refactoriser ce qui est déjà là.
Tout cela pour dire, ne supprimez pas le fichier et commencez avec un nouveau. Suivez plutôt ce que nous faisons tout au long de ce didacticiel..
Tout d’abord, introduisons un Paramètres_Message
classe. Cela représente tout type de message de paramètres avec lequel nous allons écrire. Autrement dit, il gérera les messages de réussite, les messages d'erreur et les messages d'avertissement.
Pour ce faire, nous allons définir la classe, introduire une seule propriété, puis l'instancier dans le constructeur. Découvrez ce code, et je vais expliquer un peu plus ci-dessous:
messages = array ('success' => array (), 'error' => array (), 'warning' => array (),);
Notez que nous avons créé un attribut privé, $ messages
. Lorsque la classe est instanciée, nous créons un tableau multidimensionnel. Chaque index, identifié soit par Succès
, Erreur
, ou Attention
, se réfère à son propre tableau dans lequel nous allons stocker les messages correspondants.
Ensuite, nous devons pouvoir ajouter un message, obtenir un message et obtenir tous les messages. Je vais discuter de chacun d'eux plus en détail momentanément.
Voyons d’abord comment nous ajoutons des messages:
messages [$ type])) return; array_push ($ this-> messages [$ type], $ message);
Ce message prend d'abord la chaîne entrante et nettoie les données. Ensuite, il vérifie s'il existe déjà dans les messages de réussite. Si c'est le cas, cela revient simplement. Après tout, nous ne voulons pas de messages en double.
Sinon, il ajoute le message à la collection..
La récupération des messages se présente sous deux formes:
Rappelez-vous, il y a des moments où nous ne souhaitons afficher que des messages d'avertissement. D'autres fois, nous voudrons peut-être afficher tous les messages. Puisqu'il y a deux façons de le faire, on peut en tirer parti et en tirer parti dans une autre fonction..
Cela vous semble déroutant? Accrochez-vous à moi et je vais tout expliquer. La première partie sur laquelle nous allons nous concentrer est comment rendre les messages en type (pensez succès, erreur ou avertissement). Voici le code pour le faire (et cela devrait vous paraître familier):
messages [$ type])) return; $ html = ""; $ html. = ''; $ allowed_html = array ('div' => array ('class' => array (),), 'ul' => array (), 'li' => array (),); echo wp_kses ($ html, $ allowed_html);'; foreach ($ this-> messages [$ type] en tant que $ message) $ html. = "
'; $ html. = '- $ message
"; $ html. = '
Notez ici que nous utilisons une grande partie du même code que celui du tutoriel précédent. Cependant, nous avons généralisé pour qu'il regarde la nouvelle $ type
et l'applique dynamiquement à la balise.
Cela nous permet d’avoir une seule fonction pour rendre nos messages. Ce n'est pas tout, cependant. Qu'en est-il des temps que nous voulons obtenir tout messages? Cela pourrait être de rendre sur une page ou de les saisir par programme pour un autre traitement.
Pour ce faire, nous pouvons introduire une autre fonction:
des messages comme $ type => $ message) $ this-> get_messages ($ type);
Ce message devrait être assez facile à comprendre. Il passe tout simplement en revue tous les messages de notre collection et appelle le get_messages
fonction nous avons décrit ci-dessus.
Il les restitue tous tous ensemble (nous verrons une utilisation momentanée de ceux-ci dans notre implémentation d'un crochet personnalisé). Si vous souhaitez les utiliser à d'autres fins, vous pouvez ajouter le résultat dans une chaîne et le renvoyer à l'appelant, ou effectuer une autre fonction de programmation..
Ceci n'est qu'une implémentation.
Cela le fait pour le réel Paramètres_Message
classe. Mais comment communiquons-nous avec cela? Bien sûr, nous pouvons en 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é à la Paramètres_Message
classe, droit?
Entrer le Settings_Messenger
. Cette classe est responsable de nous permet de lire et d’écrire des messages de paramètres. Je pense que l'on pourrait argumenter que vous pourriez diviser cela en deux classes par sa responsabilité car il lit et écrit à la fois mais, comme un messager qui envoie et reçoit, c'est le but de ce cours..
La configuration initiale de la classe est simple.
Paramètres_Message
classe que nous pouvons utiliser pour envoyer et recevoir des messages.tutsplus_settings_messages
crochet nous avons défini dans un tutoriel précédent.Jetez un coup d'œil aux deux premières méthodes:
message = new Settings_Message (); public function init () add_action ('tutsplus_settings_messages', array ($ this, 'get_all_messages'));
Rappelez-vous que, plus haut dans ce tutoriel, nous avons le crochet défini dans notre vue qui peut être trouvé dans settings.php
. Par souci d'exhaustivité, il est répertorié ici:
Nous n'allons pas réellement afficher les options sur cette page. Au lieu de cela, nous allons utiliser cette page pour montrer comment se connecter à notre messagerie personnalisée..
Notez, cependant, que ce crochet particulier profite de la get_all_messages
méthode, nous allons examiner dans un instant. Il n'est pas nécessaire d'utiliser cette méthode. Au lieu de cela, il pourrait être utilisé pour simplement afficher les messages de réussite ou toute autre méthode que vous souhaitez utiliser.
La création de fonctions pour ajouter des messages est simple car ces fonctions nécessitent un type et le message lui-même. Se souvenir du Paramètres_Message
prend soin de désinfecter les informations afin que nous puissions simplement passer les messages entrants.
Voir ci-dessous les messages de succès, d'avertissement et d'erreur que nous ajoutons:
add_message ('success', $ message); fonction publique add_warning_message ($ message) $ this-> add_message ('warning', $ message); fonction publique add_error_message ($ message) $ this-> add_message ('error', $ message);
C'est facile, n'est-ce pas?
La récupération des messages n’est pas très différente, sauf que nous devons simplement fournir le type de messages que nous voulons récupérer:
get_messages ('success'); fonction publique get_warning_messages () echo $ this-> get_messages ('warning'); fonction publique get_error_messages () echo $ this-> get_messages ('error');
Fait et fait, à droite?
Notez que les messages ci-dessus font tous référence à deux autres méthodes que nous n'avons pas encore abordées. Ce sont des messages privés qui nous aident à simplifier les appels ci-dessus.
Découvrez les méthodes privées suivantes, chargées à la fois d’ajouter et de récupérer des messages directement à partir du Paramètres_Message
instance maintenue sur l'objet messenger:
message-> add_message ($ type, $ message); fonction privée get_messages ($ type) return $ this-> message-> get_messages ($ type);
Et cette termine le nouveau Settings_Messenger
classe. Tout cela est beaucoup plus simple, n'est-ce pas?
Cela pose cependant la question suivante: comment lancer le plug-in maintenant que tous ces changements ont eu lieu?
Voir la fonction entière ci-dessous:
init (); $ messenger = new Settings_Messenger (); $ messenger-> init (); $ messenger-> add_success_message ('Beau tireur, c'était un sur un million!'); $ messenger-> add_warning_message ('N'entrez pas doucement dans cette bonne nuit.'); $ messenger-> add_error_message ('Danger Will Robinson.');
Et c'est tout.
Quelques points à noter:
Settings_Messenger
, alors vous n'avez pas à vous soucier d'afficher des messages sur votre page de paramètres.Settings_Messenger
, mais il ne récupère pas réellement parce que je un m en utilisant la méthode init.C'est tout pour le refactoring. Ça ne marchera pas exactement out of the box car il reste encore du code nécessaire pour charger tous les fichiers PHP nécessaires au bon fonctionnement du plugin; Cependant, le code ci-dessus se concentre sur la refactorisation qui est le but de tout ce tutoriel..
Pour une version de travail complète de ce tutoriel et un code source complet Est-ce que Si vous travaillez hors de la boîte, veuillez télécharger le code source joint à cet article dans la barre latérale droite..
J'espère qu'au fil de ce document, vous aurez découvert de nouvelles compétences et de nouvelles façons d'aborder le développement de WordPress. En parcourant la série, nous avons beaucoup couvert:
Comme d'habitude, je suis également toujours heureux de répondre aux questions via les commentaires. Vous pouvez également consulter mon blog et me suivre sur Twitter. Je parle habituellement de développement de logiciels dans WordPress et de sujets tangentiels. Si vous êtes intéressé par davantage 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+.