Avis d'administration WordPress persistants Partie 3

Bienvenue dans notre série sur les avis d’administration de WordPress persistants. Nous sommes maintenant bien placés pour pouvoir étendre notre fonctionnalité de notification aux administrateurs et notre contrôle. quand ils apparaissent sur la page.

Après cela, nous passerons aux avis d'administration persistants pour voir comment vous pouvez vous assurer qu'ils sont licenciés de manière à ne pas réapparaître lorsque les pages d'administration sont rechargées.. 

Ceci est particulièrement important car les avis d’administration personnalisés implémentés dans les plugins et les thèmes ne sont vraiment utiles que lorsque vous pouvez les ignorer définitivement. Il ne suffit pas d'ajouter simplement le est-licenciable Classe CSS.

Contrôler quand les avis de l'administrateur apparaissent

Jusqu'à présent, tous les avis de l'administrateur étaient affichés dès le chargement de la page. Il peut y avoir des moments où cela est gênant et que vous souhaitez que la notification de l'administrateur soit affichée. après un certain événement a été déclenché à la place.

Que diriez-vous si nous voulions qu'un avis d’administrateur personnalisé soit affiché sur la page d’options du plugin créée précédemment, mais seulement après le Sauvegarder les modifications le bouton a été cliqué?

Nous savons déjà à partir de la deuxième partie comment restreindre un avis d’administrateur à la page des options du plug-in. Voyons comment nous pouvons le faire apparaître après la sauvegarde des options du plugin..

Commencez par commenter le add_action appel de fonction pour plugin_admin_notice. Ensuite, ajoutez un quatrième add_action appelle init comme suit:

add_action ('admin_notices', array ($ this, 'conditional_plugin_admin_notice'));

Chaque fois que les options du plugin sont sauvegardées, un Paramètres mis à jour valeur de vrai est ajouté au super global $ _GET variable tableau. Nous pouvons utiliser cela pour déterminer si nous devons afficher notre avis d'administration.

Ajouter un nouveau conditional_plugin_admin_notice méthode pour Gwyer_Admin_Notices qui délivre la valeur de $ _GET à l'écran.

/ ** * Affiche une notification de l'administrateur sur la page des options du plug-in lorsque les paramètres ont été enregistrés. * / fonction publique conditional_plugin_admin_notice () echo "
"; print_r ($ _GET); echo"
";

Lorsque la page des options du plugin est chargée normalement, nous ne voyons pas de valeur définie pour les paramètres mis à jour..

Maintenant, entrez du texte dans le Entrez du texte champ et cliquez Sauvegarder les modifications. Cette fois, on voit Paramètres mis à jour mis à vrai, que nous pouvons mettre à profit.

Remplace le conditional_plugin_admin_notice avec:

/ ** * Affiche une notification de l'administrateur sur la page des options du plug-in lorsque les paramètres ont été enregistrés. * / public function conditional_plugin_admin_notice () $ whitelist_admin_pages = array ('settings_page_admin-notice / plugin-options'); $ admin_page = get_current_screen (); $ current_user = wp_get_current_user (); if (in_array ($ admin_page-> base, $ whitelist_admin_pages) && isset ($ _GET ['settings-updated']) && $ _GET ['settings-updated']):?> 

Les options de plugins viennent d'être enregistrées. Afficher un nom; ?>, tu es tellement génial!

A présent, ce code devrait vous paraître familier. Quelques nouvelles fonctionnalités ont cependant été ajoutées. Tout d’abord, l’expression conditionnelle a été étendue pour tester la présence de paramètres-mise à jour. Maintenant, la notification de l'administrateur ne s'affichera que si nous sommes sur la page des options du plugin et si Paramètres mis à jour est réglé sur vrai.

En outre, le nom complet de l'utilisateur actuel est généré pour que l'administrateur se voit un peu plus personnel..

le wp_get_current_user () fonction renvoie des informations sur l'utilisateur actuellement connecté. Cet objet est stocké dans $ current_user et contient des détails tels que l'adresse électronique de l'utilisateur, l'ID, le prénom, le nom de famille et le nom d'affichage, qui est la propriété particulière qui nous intéresse.

Enfin, pour un peu plus de raffinement, nous avons empêché l’avis d’administration par défaut de s’afficher. Notre avis personnalisé est donc le seul visible par l’utilisateur. Pour cela, nous venons d’ajouter une seule ligne de code à conditional_plugin_admin_notice () pour sortir CSS pour masquer la notice indésirable de l'administrateur.

écho "";

Le résultat final lorsque les options du plugin sont sauvegardées est présenté ci-dessous.

Bien que cela fonctionne très bien à des fins de démonstration, une approche meilleure (et plus propre) consisterait à ajouter des styles à une feuille de style séparée et à la mettre en file d'attente uniquement sur la page des options du plug-in..

Notre avis d’administration personnalisé pourrait être étendu de plusieurs façons. Une possibilité pourrait être de maintenir un journal dans lequel seraient enregistrées la date et l'heure actuelles, ainsi que des informations sur l'utilisateur chaque fois que les options du plug-in seraient sauvegardées..

Ou que diriez-vous de la notification de l'administrateur pour afficher combien de fois les options de plug-in ont été sauvegardées ce jour-là, la semaine, le mois, etc.? Je suis sûr que vous pouvez penser à plus d'exemples aussi!

Rejeter les avis d'administration persistants de manière efficace

Il est temps de nous salir les mains maintenant et de creuser dans un code plus détaillé alors que nous nous concentrons sur le rejet des avis d'administration persistants. Jusqu'à présent, la seule façon dont nous avons vu comment faire est d'ajouter le .est-licenciable Classe CSS dans notre conteneur d'avis div. Cela supprime la notification de l'administrateur pour la page en cours, mais elle n'est pas très utile en pratique car elle réapparaît lorsqu'une page de l'administrateur est rechargée..

Alors, comment pouvons-nous résoudre ce problème? Nous étudierons différentes méthodes de rejet des notifications d’administrateur persistantes, notamment:

  • Avis d'administration unique qui disparaît après une vue.
  • Un compteur d'avis aux administrateurs qui disparaît après un certain nombre de vues.
  • Avis collant d'administration qui reste rejeté lors de l'actualisation de la page.
  • Rejet d'une action personnalisée (notification de l'administrateur supprimée une fois l'action spécifique terminée).

Avant de commencer à implémenter chacun de ces exemples, assurez-vous que tous add_action () appelle dans Gwyer_Admin_Notices :: init () ont été commentés. Puis ajoutez un nouveau licenciement-admin-notices.php déposer au admin_notices dossier du plugin. Ouvrez ce nouveau fichier et ajoutez une nouvelle définition de classe:

init ();

Dans admin_notices.php, ajouter un autre Demandez une fois() appelez pour importer notre nouvelle classe:

require_once (dirname (__ FILE__). '/dismissible-admin-notices.php');

le Gwyer_Dismissible_Admin_Notices la classe contiendra tout le code lié au rejet des avis d’administrateur persistants.

Avis administratif unique

La première méthode que nous allons examiner consiste à afficher une notification de l'administrateur une seule fois afin qu'elle ne réapparaisse pas au chargement de la page. Vous pouvez utiliser cette méthode pour notifier un utilisateur lorsqu'un plugin ou un thème vient d'être activé.

Faisons cela pour notre plugin Admin Notices. Nous allons commencer par enregistrer une option transitoire WordPress lors de l'activation du plug-in qui doit expirer presque immédiatement..

dans le Gwyer_Dismissible_Admin_Notices classe, ajouter un appel à register_activation_hook ():

register_activation_hook (plugin_dir_path (__FILE__). 'admin-notice.php', array ($ this, 'set_admin_notice_transient'));

le register_activation_hook () Cette fonction nécessite de spécifier le chemin d'accès au fichier de plugin principal, mais nous sommes actuellement en cours. licenciement-admin-notices.php. Donc, nous ne pouvons pas simplement utiliser la constante magique PHP __FICHIER__ nous avons utilisé précédemment car cela pointe toujours sur le fichier PHP actuel.

Au lieu de cela, nous devons créer nous-mêmes le chemin du fichier de plugin principal en utilisant plugin_dir_path (__FILE__). 'admin-notice.php'.

Lorsque le plug-in Admin Notices est activé, il exécute le code ajouté à une set_admin_notice_transient méthode de classe, que nous définirons ensuite.

fonction publique set_admin_notice_transient () set_transient ('admin-notice-transitoire', true, 5); 

Cette méthode crée un nouveau transitoire appelé 'admin-notice-transitoire' avec une valeur de vrai, et est réglé pour expirer après cinq secondes.

Utilisons ce transitoire en affichant de manière conditionnelle une notification de l'administrateur si nous sommes sur la bonne page d'administrateur et que notre transitoire existe toujours..

Ajouter un nouveau add_action () appeler pour init ().

add_action ('admin_notices', tableau (& $ this, 'display_admin_notice'));

Ensuite, ajoutez le display_admin_notice fonction de rappel en tant que nouvelle méthode de classe:

 fonction publique display_admin_notice () $ current_user = wp_get_current_user (); $ whitelist_admin_pages = array ('plugins'); $ admin_page = get_current_screen (); if (in_array ($ admin_page-> base, $ whitelist_admin_pages) && get_transient ('admin-notice-transient')):?> 

le Avis de l'administrateur Le plugin vient d'être activé. Merci pour votre aide Afficher un nom; ?>!

De la même manière que dans les exemples précédents, l’avis d’administration ne s’affiche que si nous sommes sur une page spécifique, dans ce cas la page des plugins d’administrateur principale. Mais nous avons une condition supplémentaire que le 'admin-notice-transitoire' doit également exister, sinon la notification de l'administrateur ne s'affichera pas.

Une fois que l’avis d’administration est émis, le transitoire est immédiatement supprimé, même si nous l’avons initialement défini pour expirer au bout de cinq secondes seulement. Cela garantit simplement qu'il ne sera pas montré à nouveau. Cela pourrait éventuellement se produire si un utilisateur tentait d'actualiser la page de plugins très rapidement. Mais en supprimant délibérément le transitoire, nous pouvons être certains que cela ne sera jamais le cas.

Pour tester le code que nous venons d'ajouter, rendez-vous sur la page des plugins principaux et désactivez, puis réactivez le plug-in Admin Notices.

La clé ici est la 'admin-notice-transitoire' réglage transitoire. Sans cela, la notification de l'administrateur apparaît chaque fois que la page de plugins est chargée (après l'activation du plugin), ce qui n'est pas ce que nous souhaitons..

Admin Notice Counter

La prochaine étape est un avis de l'administrateur qui affichera un nombre défini de fois, après quoi il ne sera plus visible. En outre, cette fois-ci, il ne sera pas limité à une page d'administration particulière.

Avant de commencer, dans le Gwyer_Dismissible_Admin_Notices classe, commentez le register_activation_hook () et add_action () appels de fonction. Maintenant, mettons en place un avis d'administrateur de base dont nous étendrons la fonctionnalité sous peu.

Ajouter un nouveau add_action () appelle init ():

add_action ('admin_notices', tableau (& $ this, 'display_admin_notice_counter'));

Et puis étoffez la fonction de rappel display_admin_notice_counter ():

fonction publique display_admin_notice_counter () ?> 

Contre avis de l'administrateur.

Ceci affichera un avis d’administrateur standard qui apparaîtra sur chaque page d’administrateur WordPress..

Pensons à ce que nous devons faire. Notre avis administratif devrait afficher un nombre défini de fois, et chaque fois qu’il apparaît, un compteur interne est augmenté d’une unité. Une fois la limite de compteur atteinte, la notification de l'administrateur ne devrait plus apparaître.

Nous voulons que la notification d'administrateur soit affichée sur n'importe quelle page d'administrateur. La valeur du compteur doit donc persister entre les chargements de page. Pour ce faire, utilisez une option de base de données pour stocker la valeur du compteur..

Ajoutez une propriété de classe counter pour stocker la valeur limite du compteur:

public $ counter_limit = 5;

Ceci sera utilisé prochainement pour gérer le nombre de fois que la notification de l'administrateur apparaît. À l'intérieur display_admin_notice_counter (), mettre à jour le code comme suit:

 fonction publique display_admin_notice_counter () $ counter = get_option ('admin_notice_counter', 1); ?> 

Cet avis d'admin a été affiché fois).

Avant l'affichage de la notification d'administration, nous récupérons l'option de compteur et une valeur par défaut est renvoyée si elle n'existe pas encore. Une fois la notification de l'administrateur rendue, l'option de compteur est augmentée de un et mise à jour. S'il n'existe pas, une nouvelle option sera créée pour stocker la valeur actuelle..

Nous avons également mis à jour la classe CSS pour en faire un avis d’administrateur d’informations..

Essayez de visiter différentes pages d’administrateur et de voir le compteur augmenter à chaque fois..

le ++compteur $ Le code est un exemple d'opérateur de pré-incrémentation. Il ajoute une valeur à compteur $ avant c'est enregistré dans la base de données. Si nous utilisions un opérateur post increment (c.-à-d.. compteur $++) alors la valeur de compteur $ serait stocké en premier et puis augmenté, ce qui ne fonctionnerait pas.

Incorporons $ counter_limit maintenant pour éviter que l'avis d'administration n'apparaisse trop de fois. Ajouter ceci à display_admin_notice_counter () sous la déclaration de compteur $:

if ($ counter> $ this-> counter_limit) return; 

Désormais, une fois que l'avis d'administration a été affiché cinq fois, il ne sera plus visible sur les pages d'administration suivantes. Il peut être intéressant d'afficher un message lors de la dernière notification de l'administrateur pour que l'utilisateur sache qu'il ne s'affichera plus. Étendez l'expression conditionnelle et envoyez un message supplémentaire:

 fonction publique display_admin_notice_counter () $ counter = get_option ('admin_notice_counter', 1); if ($ counter> $ this-> counter_limit) return;  else if ($ counter == $ this-> counter_limit) $ extra_message = "Il est temps de dire au revoir maintenant."; ?> 

Cet avis d'admin a été affiché fois).

Cependant, vous ne verrez pas le message si vous avez déjà dépassé la limite du compteur. Vous pouvez résoudre temporairement ce problème en augmentant le $ counter_limit variable.

À des fins de test, il serait préférable de pouvoir réinitialiser la limite du compteur. Si vous savez comment éditer la base de données, vous pouvez entrer et changer l’option directement, mais cela peut être fastidieux de le faire plusieurs fois. Alors implémentons notre propre fonctionnalité de réinitialisation.

Tout d'abord, changer $ counter_limit retour à 5 et ajoutez une nouvelle propriété de classe:

public $ counter_reset = false;

Puis à l'intérieur init () remplacer

add_action ('admin_notices', tableau (& $ this, 'display_admin_notice_counter'));

avec

$ this-> reset_counter_check ();

La fonction de réinitialisation doit afficher l’avis de notre administrateur de compteur ou supprimer le admin_notice_counter option de base de données et affiche un avertissement administrateur à la place.

 fonction publique reset_counter_check () if (! $ this-> counter_reset) add_action ('admin_notices', array (& $ this, 'display_admin_notice_counter'));  else delete_option ('admin_notice_counter'); ?> 

Le compteur d'avis aux administrateurs a été réinitialisé! Changement $ counter_reset à faux pour relancer le compteur d'avis de l'administrateur.

Pour utiliser la nouvelle fonction de réinitialisation, modifiez simplement $ counter_reset à vrai et charger une page d'administrateur.

Puis changez le en faux encore.

Remarque: Cette méthode peut facilement être utilisée pour afficher une notification de l'administrateur une seule fois, comme nous l'avons fait dans l'exemple précédent, mais sa configuration est légèrement plus compliquée. Cela dépend vraiment de vos besoins.

Si tout ce dont vous avez besoin est un avis d’administration à usage unique, la méthode précédente répondra probablement mieux à vos besoins et sera plus rapide à mettre en œuvre. Mais la méthode du compteur est plus flexible et une fois configurée, elle est tout aussi facile à utiliser dans vos propres projets..

Conclusion

Nous avons couvert beaucoup de terrain dans la troisième partie de cette série de tutoriels. Nous avons vu comment contrôler le moment où les avis d’administrateur apparaissent plutôt que de toujours apparaître dès que le chargement d’une page d’administrateur est terminé. Ceci est utile à bien des égards, mais notre exemple a montré comment afficher une notification d’administrateur personnalisée après la sauvegarde des options du plug-in..

Ensuite, nous passons à deux exemples distincts de rejet d’avis d’administration persistants. Cela vous donne beaucoup de flexibilité dans la manière dont vous présentez les avis d'administration à l'utilisateur. Et dans la prochaine et dernière partie de cette série de didacticiels, nous examinerons d'autres moyens de supprimer les avis d'administration persistants..

Et, pour le plaisir, nous allons créer nos propres types d'avis de l'administrateur et ajouter des décorations d'icônes.