Petit conseil obtenez les crochets de l'écran actuel

Dans la mesure du possible, il est préférable d'utiliser des crochets spécifiques à l'écran plutôt que plus génériques. init, admin_init, admin_footer etc. (sauf si vous souhaitez que votre rappel s'exécute sur tous les écrans). Dans cette astuce, nous verrons comment vous pouvez facilement obtenir les crochets d’écran pour une page donnée..


Crochets spécifiques à la page

Les crochets spécifiques à une page constituent le moyen le plus efficace (et le plus propre) de cibler un rappel uniquement pour les écrans pour lesquels vous en avez besoin. Ils comprennent:

  • load- page-hook - appelé avant le chargement de l'écran (la logique de ceci peut être trouvée ici)
  • admin_print_styles- page-hook - action pour les styles d'impression dans le de la page d'administration
  • admin_print_scripts- page-hook - action pour imprimer des scripts dans le de la page d'administration
  • admin_head- page-hook - action déclenchée à l'intérieur du de la page d'administration
  • admin_footer- page-hook - action déclenchée juste au-dessus de la fermeture tag sur la page d'administration

Mais quelle est la valeur de page-hook pour une page particulière? En regardant le charge-* accrocher en particulier, vous constaterez qu'il existe une logique assez compliquée dans la détermination de la page-hook. En particulier, il traite les pages de plug-in personnalisées différemment des pages "principales" (telles que les pages de type d'article et de taxonomie) et, dans un souci de compatibilité ascendante, il utilisera plusieurs points d'ancrage pour le même écran lors de l'édition d'articles, de pages ou de catégories..

Les règles générales pour la valeur de page-hook peut se résumer comme suit:

  • Pour les pages d’administration personnalisées ajoutées via add_menu_page () (et fonctions associées) c’est le identifiant d'écran (la valeur renvoyée par add_menu_page ())
  • Pour la page d'administration répertoriant les publications de tout type de publication, il est: edit.php
  • Sur la page "Ajouter un nouveau" de tout type de message, il est post-new.php
  • Sur la page d'édition de tout type de message, il est post.php
  • Pour les pages de taxonomie c'est edit-tags.php

Cependant, le crochet de page est généré, il est finalement stocké dans le fichier global. $ hook_suffix.


Obtenir facilement les crochets d'un écran

En général, ces règles suffisent pour déterminer les points d’accroché spécifiques à une page. Mais lorsque je travaille avec eux, je trouve souvent utile d’avoir une référence facile. Pour créer cette référence simple, nous allons ajouter un panneau à l'onglet "Aide" en haut à droite de chaque écran, qui répertoriera les détails de l'écran (ID d'écran, base de l'écran et, plus utile encore, l'écran de l'écran). suffixe de crochet). Il listera également les crochets spécifiques de l'écran.

Les panneaux de l'onglet d'aide ont été introduits dans la version 3.3, cela ne fonctionnera donc que pour les versions de WordPress 3.3+. Pour ajouter le panneau, nous utilisons le aide contextuelle filtre. Ceci est un filtre pour des raisons de compatibilité ascendante, nous ne filtrons donc rien. Au lieu de cela, nous utilisons le WP_Screen :: add_help_tab méthode.

 / * Ajouter une aide contextuelle * / add_filter ('contextual_help', 'wptuts_screen_help', 10, 3); function wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // La fonction add_help_tab pour screen a été introduite dans WordPress 3.3. if (! method_exists ($ screen, 'add_help_tab')) return $ contextual_help; / *… Générer du contenu d'aide… * / $ help_content = "; $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Informations sur l'écran', 'content' => $ help_content,)); return $ aide contextuelle;

Pour générer le contenu de l'aide, nous prenons le global $ hook_suffix et l'ajouter aux tiges de crochet mentionnées ci-dessus. Nous obtenons également une liste des détails de l'écran, qui sont stockés en tant que propriétés du WP_Screen objet.

 global $ hook_suffix; // Liste des propriétés de l'écran $ variables = '
    Variables d'écran '. sprintf ('
  • Identifiant de l'écran:% s
  • ', $ screen_id). sprintf ('
  • Base de l'écran:% s
  • ', $ screen-> base). sprintf ('
  • Base parentale:% s
  • ', $ screen-> parent_base). sprintf ('
  • Fichier parent:% s
  • ', $ screen-> parent_file). sprintf ('
  • Suffixe du crochet:% s
  • ', $ hook_suffix). '
'; // Ajoute $ hook_suffix global aux crochets $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Si add_meta_boxes ou add_meta_boxes_ screen_id est utilisé, listez-les aussi si (did_action ('add_meta_boxes_'. $ Screen_id)) $ hooks [] = 'add_meta_boxes_'. $ screen_id; if (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Obtenir le code HTML de la liste pour les crochets $ hooks = '
    Crochets
  • '. imploser ('
  • ', $ crochets). '
'; // Combine la liste $ variables avec la liste $ hooks. $ help_content = $ variables. $ crochets;

Ce qui va nous donner quelque chose comme:


Le code complet

Vous pouvez placer les éléments suivants dans le plug-in d’utilitaire de votre site ou (si vous le souhaitez), dans le thème de votre thème. functions.php. Assurez-vous de renommer wptuts_screen_help à quelque chose d'unique à toi.

 add_action ('contextual_help', 'wptuts_screen_help', 10, 3); function wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // La fonction add_help_tab pour screen a été introduite dans WordPress 3.3. if (! method_exists ($ screen, 'add_help_tab')) return $ contextual_help; global $ hook_suffix; // Liste des propriétés de l'écran $ variables = '
    Variables d'écran '. sprintf ('
  • Identifiant de l'écran:% s
  • ', $ screen_id). sprintf ('
  • Base de l'écran:% s
  • ', $ screen-> base). sprintf ('
  • Base parentale:% s
  • ', $ screen-> parent_base). sprintf ('
  • Fichier parent:% s
  • ', $ screen-> parent_file). sprintf ('
  • Suffixe du crochet:% s
  • ', $ hook_suffix). '
'; // Ajoute $ hook_suffix global aux crochets $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Si add_meta_boxes ou add_meta_boxes_ screen_id est utilisé, listez-les aussi si (did_action ('add_meta_boxes_'. $ Screen_id)) $ hooks [] = 'add_meta_boxes_'. $ screen_id; if (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Obtenir le code HTML de la liste pour les crochets $ hooks = '
    Crochets
  • '. imploser ('
  • ', $ crochets). '
'; // Combine la liste $ variables avec la liste $ hooks. $ help_content = $ variables. $ crochets; // Ajout du panneau d'aide $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Informations sur l'écran', 'content' => $ help_content,)); return $ contextual_help;