Avis d'administration WordPress persistants 2e partie

Dans la première partie de cette série, nous avons appris comment implémenter une notification d’administrateur de base qui apparaît en haut de chaque page d’administrateur WordPress. Dans ce tutoriel, nous allons commencer à créer un plug-in contenant tout notre code d'avis d'administrateur personnalisé..

Nous allons commencer par implémenter les avis d’administration standard et les utiliser comme base d’exemples plus souples et plus avancés..

Configurer notre plugin

Cependant, commençons par configurer un nouveau plugin que nous utiliserons pour tous nos avis d’administration afin que nous puissions commencer à saisir le code..

Je suppose ici que vous avez déjà un site de développement WP local configuré. Sinon, reportez-vous aux liens de la première partie de cette série de tutoriels..

Créez un nouveau dossier de plugin appelé admin_notices à l'intérieur / wp-content / plugins /, puis créer un admin_notices.php fichier qui sera le fichier principal du plugin.

S'ouvrir admin_notices.php dans votre éditeur préféré et ajoutez la structure de base du plugin:

init ();

Nous avons ajouté un en-tête de base de plugin afin que WordPress reconnaisse notre plugin. Ceci est suivi par une classe qui contiendra des méthodes pour afficher nos avis d'administrateur.

J'ai nommé la classe Gwyer_Admin_Notices essayer de le rendre aussi unique que possible. De cette façon, il est beaucoup moins susceptible d'entrer en conflit avec un nom de classe existant.

Commençons par afficher un avis d’administrateur de base, puis ajoutons-le pour le rendre plus utile. Pour créer un avis d’administration, ajoutez le admin_notices accrocher à la init () une fonction:

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

Le crochet comprend un test_notice fonction de rappel qui sera utilisée pour afficher le balisage de notification de l'administrateur.

Ajoutez la méthode de classe suivante à Gwyer_Admin_Notices pour afficher l’avis d’administrateur actuel. Pour les messages, nous utiliserons des citations de films classiques des 100 dernières années.

/ ** * Affiche un avis d'administrateur de test. * / fonction publique test_notice () ?> 

Yoo hoo, grand coup d'été.

Activer le plugin pour afficher l'avis de test.

Ajoutons également des exemples des autres types d’avis d’administration que nous pouvons afficher, y compris le type licenciable, en ajoutant le est-licenciable Classe CSS. Ajoutez-les à la test_notice () méthode sous l'avis d'administration existant div:

Toto, j'ai l'impression que nous ne sommes plus au Kansas.

Vous me avez eu à bonjour".

De tous les gin joints de toutes les villes du monde, elle entre dans le mien.

Personne ne met bébé dans un coin.

C’est l’ensemble des types d’avis que nous pouvons afficher via les classes CSS principales de WordPress. Rappelez-vous cependant que l’avis d’administration révocable réapparaîtra à chaque chargement de page.!

La mention administrateur "rejetable" dans ce contexte ne signifie que pour la page en cours. Avoir des avis d’administration persistants n’est pas très flexible, aussi nous verrons plus tard différentes manières de rejeter efficacement vos avis d’administrateur..

Avis de l'administrateur

Jusqu'à présent, nous n'avons utilisé que le admin_notice crochet pour implémenter un avis d'administrateur. Il existe en fait quatre points d’accès aux notifications d’administrateur que vous pouvez utiliser pour afficher les notifications, mais admin_notice est celui le plus couramment utilisé.

Les quatre crochets disponibles sont:

  • admin_notices (utilisé dans la plupart des cas)
  • network_admin_notices
  • all_admin_notices*
  • user_admin_notices*

*Aucune documentation officielle actuellement disponible pour ces crochets.

Alors, où utiliseriez-vous généralement all_admin_notices, user_admin_notices, et network_admin_notices? Et en quoi diffèrent-ils de admin_notices?

J'ai dit précédemment que le admin_notices hook affiche des notifications sur toutes les pages d'administration, mais ce n'est pas strictement vrai. Si vous regardez admin-header.php dans WordPress, vous verrez que admin_notices, network_admin_notices, et user_admin_notices sont mutuellement exclusifs. C'est seulement un de ces crochets se déclenche sur une page d'administration WordPress.

Une série d'expressions conditionnelles évalue la page d'administration actuelle et n'en déclenche qu'une, en fonction du type de page d'administration sur laquelle vous êtes actuellement..

d'abord, is_network_admin () vérifie si vous êtes sur un écran d’administrateur réseau (toute page d’administrateur basée sur un / wp-admin / network / URL). Si oui, le network_admin_notices feux de crochet.

Autrement, is_user_admin () vérifie si vous êtes sur un écran d’administrateur d’utilisateur (toute page d’administrateur basée sur un / wp-admin / utilisateur / URL). Si oui, le user_admin_notices feux de crochet. 

Et, comme vous l'avez peut-être deviné, si tous les deux is_network_admin () et is_user_admin () retourne alors faux admin_notices feux de crochet.

Cela laisse juste le all_admin_notices crochet. Ce crochet ne fait pas partie de l'expression conditionnelle décrite ci-dessus, il est donc garanti qu'il s'affiche sur tout pages d'administration, peu importe quoi, y compris les pages d'administration réseau multisites.

Pour clarifier, pour toute page d’administrateur WordPress, seul le all_admin_notices crochet est garanti de toujours tirer. Sur les trois autres crochets, seulement un se déclenche en fonction de la page d'administration sur laquelle vous êtes actuellement.

Je vous encourage à jeter un oeil à admin-header.php (vers la fin du fichier) pour voir par vous-même comment WordPress évalue à quel moment utiliser chaque crochet de notifications d'administrateur.

Nous n'utiliserons que admin_notices tout au long de cette série de didacticiels, mais vous constaterez peut-être que vous avez besoin de certains autres crochets de votre propre projet, il est donc intéressant de les vérifier..

Affichage des avis de l'administrateur sur des pages spécifiques

Portons maintenant notre attention sur l'affichage d'avis de l'administrateur sur des pages spécifiques. Tout d'abord, commentez l'appel à add_action de sorte que nos avis de test ne sont plus affichés.

À l'intérieur init (), ajouter un nouveau add_action () appeler que nous utiliserons pour afficher un avis d'administrateur sur une page spécifique de l'administrateur.

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

Puis définissez le specific_admin_page () méthode comme suit:

/ ** * Affiche un avis d'administrateur sur un écran d'administrateur spécifique. * / fonction publique specific_admin_page () $ admin_page = get_current_screen (); ?> 

Information: Nous sommes actuellement sur le base; ?> page d'administration.

Enregistrez vos modifications et affichez n’importe quelle page de l’administrateur de WordPress. Je vais essayer la page principale du tableau de bord.

Comme vous pouvez le constater, le nom (de base) de la page que vous visitez est affiché dans l’avis d’administration de la page que vous visitez..

le get_current_screen () la fonction retourne un WP_Screen objet avec des détails sur l'écran actuel de l'administrateur. La propriété particulière de l'objet qui nous intéresse est WP_Screen-> base, qui évalue le type de base de l'écran actuel. Essayez de charger différentes pages d’administrateur WordPress pour connaître les valeurs renvoyées. WP_Screen-> base.

Nous pouvons utiliser la valeur de base pour charger conditionnellement notre avis d’administrateur uniquement sur la page du tableau de bord. La valeur que nous devons vérifier est tableau de bord. Montrons également un autre avis d’administrateur si nous ne sommes pas sur la page du tableau de bord de l’administrateur. Remplacez votre définition de specific_admin_page () avec:

/ ** * Affiche un avis d'administrateur sur un écran d'administrateur spécifique. * / fonction publique specific_admin_page () $ admin_page = get_current_screen (); if ($ admin_page-> base == "tableau de bord"):?> 

Nous l'avons créé! Bienvenue sur le tableau de bord.

Où êtes-vous allé? Ce n'est pas le tableau de bord!

Tout va bien lorsque nous sommes sur la page du tableau de bord, mais essayez de naviguer vers une autre page d'administrateur et voyez ce qui se passe..

L'utilisation de cette approche simple nous donne un peu de flexibilité pour l'affichage des avis d'administrateur sur des pages d'administration spécifiques. Nous pouvons facilement l'étendre à la liste blanche de toutes les pages d'administration pour lesquelles nous souhaitons afficher des avis d'administration..

Encore une fois, remplacez le specific_admin_pages () fonction, cette fois avec le code suivant:

/ ** * Affiche un avis d'administrateur sur un écran d'administrateur spécifique. * / fonction publique specific_admin_page () $ whitelist_admin_pages = array ('tableau de bord', 'upload', 'edit-comments'); $ admin_page = get_current_screen (); if (in_array ($ admin_page-> base, $ whitelist_admin_pages)):?> 

Nous l'avons créé! C'est le 'base; ?> 'page admin.

Pas sur ton nelly! Cette page n'est pas sur ma liste.

Au lieu de rechercher une seule page d’administrateur, nous vérifions maintenant si le nom de base de la page d’administrateur actuelle est dans la liste. $ whitelist_admin_pages tableau. Lorsque nous accédons au tableau de bord, à la médiathèque ou aux pages d'administration des commentaires, nous voyons notre avis d'administration de succès..

Et quand on visite tout page d’administrateur (non incluse dans notre tableau de liste blanche), nous voyons un autre avis d’administrateur.

Qu'en est-il d'afficher un avis d'administrateur sur une page d'options de plug-in? Comment ferions-nous cela? Avant de commencer, nous devons d'abord configurer une page d'options factices pour notre plugin..

Créez un nouveau fichier appelé plugin-options.php à l'intérieur de avis d'admin dossier du plugin que nous avons ajouté précédemment et ajoutez le code suivant:

 

Avis des administrateurs

Entrez du texte
init ();

Au sommet de admin-notice.php (directement au-dessus de la déclaration de classe), incluez la classe d'options du plugin dans le fichier de plugin principal avec:

require_once (dirname (__ FILE__). '/plugin-options.php');

Je ne vais pas trop dans les détails sur la façon dont le code plugin-options.php fonctionne comme cela pourrait être tout un tutoriel à lui seul! Si vous souhaitez un rafraîchissement, je vous recommande de jeter un coup d'œil à la page WordPress Codex sur l'ajout de pages d'options de plug-in..

Fondamentalement, nous ne faisons qu’ajouter un nouveau Avis de l'administrateur sous-page à la Réglages menu. La page des options du plugin contient un seul champ de texte dans lequel vous pouvez entrer une chaîne. Quand le Sauvegarder les modifications le bouton est cliqué, le contenu du champ de texte est enregistré dans la base de données WordPress.

Ceci n'est qu'un exemple simple d'une page de paramètres de plug-in destinée uniquement à la démonstration. Il ne comprend pas les fonctions de désinfection ou de traduction nécessaires recommandées pour un plug-in de production destiné à une diffusion générale..

Aller à Paramètres> Avis de l'administrateur pour afficher la page des options du plugin.

Comme prévu, l’avis d’administration que nous avons ajouté s’affiche précédemment sur la page d’options du plug-in. Le message d'erreur est affiché car notre page d'options de plug-in n'est pas dans le tableau $ whitelist_admin_pages des pages d'administration autorisées. Réglons ça maintenant.

Afin d'ajouter notre page d'options au tableau, nous devons connaître le nom de la base. À l'intérieur specific_admin_page (), remplacez l'erreur admin notice div par la suivante:

Pas sur ton nelly! Ce 'base; ?> 'page n'est pas sur ma liste.

Nous recevons toujours le même avis d’erreur administrateur qu’auparavant, mais cette fois-ci, il contient le nom de base dont nous avons besoin, qui s’avère être settings_page_admin-notice / plugin-options. Ce n’est pas un nom que nous aurions facilement deviné, il valait donc la peine de prendre le temps de le sortir.!

Ajoutez le nom de la base au $ whitelist_admin_pages tableau, qui devrait maintenant ressembler à ceci:

$ whitelist_admin_pages = array ('settings_page_admin-notice / plugin-options', 'tableau de bord', 'upload', 'edit-comments');

Actualisez la page des options du plug-in pour voir la mise à jour de l'avis de l'administrateur..

Maintenant que nous connaissons le nom de base de la page d’options du plug-in, nous pouvons facilement créer un avis d’administrateur qui ne s’affiche que sur cette page. Retirer settings_page_admin-notice / plugin-options du $ whitelist_admin_pages tableau et commentez la seconde add_action appel de fonction dans init (). Ajoutez ensuite une troisième action que nous utiliserons pour notre page d’option de plug-in uniquement l’avis de l'administrateur. Votre init () la fonction devrait maintenant ressembler à ceci:

/ ** * Enregistrez les crochets. * / public function init () // add_action ('admin_notices', array ($ this, 'test_notice')); // add_action ('admin_notices', array ($ this, 'specific_admin_page')); add_action ('admin_notices', array ($ this, 'plugin_admin_notice'));  

Étoffons le plugin_admin_notice () fonction de rappel maintenant. Ajouter cette nouvelle méthode à la Gwyer_Admin_Notices classe:

/ ** * Affiche une notification de l'administrateur sur la page des options du plug-in. * / public function plugin_admin_notice () $ whitelist_admin_pages = array ('settings_page_admin-notice / plugin-options'); $ admin_page = get_current_screen (); if (in_array ($ admin_page-> base, $ whitelist_admin_pages)):?> 

Bienvenue sur la page du plugin Admin Notices!

Ceci est très similaire à specific_admin_page () sauf que nous avons supprimé l'expression conditionnelle. Nous avons également ajouté un bouton licenciable en ajoutant le est-licenciable Classe CSS, donc la notification de l'administrateur peut maintenant être fermée aussi.


Essayez de charger d'autres pages d'administration pour vérifier que la notification de l'administrateur ne s'affiche que sur la page des options du plug-in..

Conclusion

Dans ce didacticiel, nous en avons appris davantage sur les avis d’administration et les différents points d’accès disponibles pour les afficher. Nous avons également expliqué comment afficher les avis d’administrateur uniquement sur des pages spécifiques de l’administrateur de WordPress. Nous avons développé un plugin dédié pour contenir tout le code de notification d'administrateur personnalisé.

Dans la troisième partie, nous étendrons davantage le plug-in en montrant comment déclencher les notifications de l'administrateur lorsque certains événements se produisent. N'oubliez pas que la nature open-source de WordPress facilite l'apprentissage et l'extension. À cette fin, nous avons beaucoup à examiner et à étudier sur le marché Envato si vous êtes curieux.

Nous nous concentrerons ensuite sur la résolution du problème des avis d’administration persistants afin qu’ils ne réapparaissent pas lors de l’actualisation de la page. Nous allons implémenter différentes méthodes dans notre plugin personnalisé pour nous permettre de le faire..