Snelle tip verkrijg de haken van het huidige scherm

Waar mogelijk is het beter om schermspecifieke haken te gebruiken in plaats van meer generiek in het, admin_init, admin_footer etc. (tenzij u specifiek wilt dat uw callback op elk scherm wordt uitgevoerd). In deze snelle tip zullen we bekijken hoe u eenvoudig de schermhaken voor een bepaalde pagina kunt verkrijgen.


Pagina specifieke haken

Paginaspecifieke hooks bieden de meest efficiënte (en schoonste) manier om een ​​callback te targeten voor alleen het scherm (en) waarvoor u het nodig heeft. Ze bevatten:

  • load page-hook - aangeroepen voorafgaand aan het laden van het scherm (de logica hiervoor is hier te vinden)
  • admin_print_styles- page-hook - actie voor afdrukstijlen in de van de beheerderspagina
  • admin_print_scripts- page-hook - actie voor het afdrukken van scripts in de van de beheerderspagina
  • admin_head- page-hook - actie geactiveerd binnen de van de beheerderspagina
  • admin_footer- page-hook - actie geactiveerd net boven de sluiting tag op de beheerderspagina

Maar wat is de waarde van Page-hook voor een bepaalde pagina? Kijken naar de laden-* hook in het bijzonder zul je merken dat er een redelijk ingewikkelde logica is bij het bepalen van de Page-hook. In het bijzonder worden aangepaste invoegpagina's anders behandeld dan 'kernpagina's' (zoals pagina's van het type post en taxonomie) en omwille van compatibiliteit met eerdere versies, gebruikt deze meerdere haken voor hetzelfde scherm bij het bewerken van berichten, pagina's of categorieën.

De algemene regels voor de waarde van Page-hook kan als volgt worden samengevat:

  • Aangepaste beheerderspagina's toegevoegd via add_menu_page () (en gerelateerde functies) het is de scherm ID (de waarde geretourneerd door add_menu_page ())
  • Voor de adminpaginalijstingsposten van om het even welk posttype, is het edit.php
  • Op de pagina 'nieuw toevoegen' van elk berichttype is dat het geval post-new.php
  • Op de bewerkingspagina van elk berichttype is dit post.php
  • Voor taxonomiepagina's is dat zo bewerk-tags.php

De paginahaak wordt echter wel gegenereerd, maar wordt uiteindelijk opgeslagen in het globale $ hook_suffix.


Krijg eenvoudig de haken van een scherm

Over het algemeen volstaan ​​die regels om de paginaspecifieke hooks te bepalen. Maar als ik met ze werk, vind ik het vaak handig om een ​​eenvoudige referentie te hebben. Om deze eenvoudige referentie te maken voegen we een paneel toe aan het tabblad 'help' in de rechterbovenhoek van elk scherm met de details van het scherm (scherm-ID, schermbasis en het meest nuttig, het scherm haak achtervoegsel). Het zal ook de specifieke haken van het scherm weergeven.

Panelen in het help-tabblad zijn in 3.3 geïntroduceerd, dus dit werkt alleen voor WordPress-versies 3.3 en hoger. Om het paneel toe te voegen, gebruiken we de contextual_help filter. Dit is een filter voor achterwaartse compatibiliteitsdoeleinden, dus we filteren niets. In plaats daarvan gebruiken we de WP_Screen :: add_help_tab methode.

 / * Voeg contextuele hulp toe * / add_filter ('contextual_help', 'wptuts_screen_help', 10, 3); function wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // De add_help_tab-functie voor scherm werd geïntroduceerd in WordPress 3.3. als (! method_exists ($ screen, 'add_help_tab')) $ contextual_help retourneert; / * ... help-inhoud genereren ... * / $ help_content = "; $ scherm-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Scherminformatie', 'inhoud' => $ help_content,)); return $ contextual_help;

Voor het genereren van de Help-inhoud nemen we de wereldwijde $ hook_suffix en voeg het toe aan de hierboven genoemde haakstelen. We krijgen ook een lijst met de details van het scherm, die worden opgeslagen als eigenschappen van de WP_Screen voorwerp.

 globale $ hook_suffix; // Eigenschappen van lijstschermen $ variables = '
    Schermvariabelen '. sprintf ('
  • Scherm-ID:% s
  • ', $ screen_id). sprintf ('
  • Schermbasis:% s
  • ', $ scherm-> basis). sprintf ('
  • Bovenliggende basis:% s
  • ', $ scherm-> parent_base). sprintf ('
  • Hoofdbestand:% s
  • ', $ scherm-> parent_file). sprintf ('
  • Haak achtervoegsel:% s
  • ', $ hook_suffix). '
'; // Voeg global $ hook_suffix toe aan de haakstelen $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Als add_meta_boxes of add_meta_boxes_ screen_id wordt gebruikt, vermeldt u deze ook als (did_action ('add_meta_boxes_'. $ Screen_id)) $ hooks [] = 'add_meta_boxes_'. $ Screen_id; if (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Get List HTML voor de hooks $ hooks = '
    haken
  • '. imploderen ('
  • ', $ hooks). '
'; // Combineer $ variabelenlijst met $ hooks lijst. $ help_content = $ variabelen. $ Haken;

Wat ons ongeveer het volgende zal geven:


De code is vol

U kunt het volgende plaatsen in de invoegtoepassing van uw site, of (als dat moet) uw thema's functions.php. Zorg ervoor dat je de naam verandert wptuts_screen_help naar iets unieks voor jou.

 add_action ('contextual_help', 'wptuts_screen_help', 10, 3); function wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // De add_help_tab-functie voor scherm werd geïntroduceerd in WordPress 3.3. als (! method_exists ($ screen, 'add_help_tab')) $ contextual_help retourneert; globale $ hook_suffix; // Eigenschappen van lijstschermen $ variables = '
    Schermvariabelen '. sprintf ('
  • Scherm-ID:% s
  • ', $ screen_id). sprintf ('
  • Schermbasis:% s
  • ', $ scherm-> basis). sprintf ('
  • Bovenliggende basis:% s
  • ', $ scherm-> parent_base). sprintf ('
  • Hoofdbestand:% s
  • ', $ scherm-> parent_file). sprintf ('
  • Haak achtervoegsel:% s
  • ', $ hook_suffix). '
'; // Voeg global $ hook_suffix toe aan de haakstelen $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Als add_meta_boxes of add_meta_boxes_ screen_id wordt gebruikt, vermeldt u deze ook als (did_action ('add_meta_boxes_'. $ Screen_id)) $ hooks [] = 'add_meta_boxes_'. $ Screen_id; if (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Get List HTML voor de hooks $ hooks = '
    haken
  • '. imploderen ('
  • ', $ hooks). '
'; // Combineer $ variabelenlijst met $ hooks lijst. $ help_content = $ variabelen. $ Haken; // Help-paneel toevoegen $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Scherminformatie', 'inhoud' => $ help_content,)); return $ contextual_help;