Snabbtips Hämta nuvarande skärmens krokar

Där det är möjligt är det bättre att använda skärmspecifika krokar snarare än mer generiska i det, admin_init, admin_footer etc. (om du inte vill att din återuppringning ska köras på varje skärm). I detta snabba tips ser vi på hur du enkelt kan få skärmkrokarna för en viss sida.


Sidspecifika krokar

Sidspecifika krokar erbjuder det mest effektiva (och renaste) sättet att rikta in en återuppringning för endast den skärm (er) du behöver den för. De inkluderar:

  • last sida-hook - kallas före skärmbelastningen (logiken för detta kan hittas här)
  • admin_print_styles- sida-hook - åtgärd för utskriftsstilar i på admin sidan
  • admin_print_scripts- sida-hook - åtgärd för utskrift av skript i på admin sidan
  • admin_head- sida-hook - åtgärd utlöst inom på admin sidan
  • admin_footer- sida-hook - åtgärd utlöst strax över stängningen tagg på admin sidan

Men vad är värdet av Sida-hook för en viss sida? Titta på ladda-* i synnerhet kommer du att finna att det finns en ganska ingripande logik vid bestämning av Sida-hook. I synnerhet behandlar den anpassade plugin-sidor annorlunda än "core" -sidor (t.ex. posttyp och taxonomisidor) och för bakgrunds kompatibilitet kommer den att använda flera krokar för samma skärm vid redigering av inlägg, sidor eller kategorier.

De allmänna reglerna för värdet av Sida-hook kan sammanfattas enligt följande:

  • För anpassade adminsidor som läggs till via add_menu_page () (och relaterade funktioner) är det skärm-ID (värdet returneras av add_menu_page ())
  • För administratörssidan som listar inlägg av vilken posttyp som helst, är det edit.php
  • På sidan "Lägg till ny" av vilken posttyp som helst, är det post-new.php
  • På redigeringssidan för en posttyp är den post.php
  • För taxonominsidor är det edit-tags.php

Sidkroken genereras dock, den är slutligen lagrad i den globala $ hook_suffix.


Enkelt få en skärm krokar

Generellt är dessa regler tillräckliga för att bestämma sidspecifika krokar. Men när jag jobbar med dem, tycker jag ofta att det hjälper till att få en enkel referens. För att skapa denna enkla referens lägger vi till en panel på fliken "Hjälp" längst upp till höger på varje skärm som kommer att lista skärmens detaljer (skärm-ID, skärmbas och mest användbar, skärmens krok suffix). Det kommer också att lista skärmens specifika krokar.

Paneler i hjälpfliken introducerades i 3.3, så det här fungerar bara för WordPress-versioner 3.3+. För att lägga till panelen använder vi contextual_help filtrera. Detta är ett filter för bakåtkompatibilitetsändamål, så vi filtrerar inte någonting. I stället använder vi WP_Screen :: add_help_tab metod.

 / * Lägg till kontextuell hjälp * / add_filter ('contextual_help', 'wptuts_screen_help', 10, 3); funktion wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // Funktionen add_help_tab för skärm introducerades i WordPress 3.3. om (! method_exists ($ screen, 'add_help_tab')) returnera $ contextual_help; / * ... skapa hjälpinnehåll ... * / $ help_content = "; $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Skärminformation', 'content' => $ help_content,)), returnera $ contextual_help;

För att generera hjälpinnehåll tar vi det globala $ hook_suffix och lägg den till krogstammarna som nämns ovan. Vi får också en lista över skärmens detaljer, som lagras som egenskaper hos WP_Screen objekt.

 global $ hook_suffix; // Egenskaper för listskärmen $ variables = '
    Skärmvariabler '. sprintf ('
  • Skärm id:% s
  • ', $ screen_id). sprintf ('
  • Skärmbas:% s
  • ', $ screen-> bas). sprintf ('
  • Föräldrabas:% s
  • ', $ screen-> parent_base). sprintf ('
  • Föräldrafil:% s
  • ', $ screen-> parent_file). sprintf ('
  • Hook suffix:% s
  • ', $ hook_suffix). '
'; // Lägg till global $ hook_suffix till krokstammarna $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Om add_meta_boxes eller add_meta_boxes_ screen_id används, lista dessa också om (did_action ('add_meta_boxes_'. $ Screen_id)) $ krokar [] = 'add_meta_boxes_'. $ Screen_id; om (did_action ('add_meta_boxes')) $ krokar [] = 'add_meta_boxes'; // Hämta lista HTML för krokarna $ hooks = '
    krokar
  • '. implodera ('
  • ', $ krokar). '
'; // Kombinera $ variabler lista med $ krokar listan. $ help_content = $ variabler. $ krokar;

Vilket ger oss något liknande:


Koden i sin helhet

Du kan placera följande i din webbplatsens plug-in, eller (om du måste) ditt tema functions.php. Se till att du byter namn på wptuts_screen_help till något unikt för dig.

 add_action ('contextual_help', 'wptuts_screen_help', 10, 3); funktion wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // Funktionen add_help_tab för skärm introducerades i WordPress 3.3. om (! method_exists ($ screen, 'add_help_tab')) returnera $ contextual_help; global $ hook_suffix; // Egenskaper för listskärmen $ variables = '
    Skärmvariabler '. sprintf ('
  • Skärm id:% s
  • ', $ screen_id). sprintf ('
  • Skärmbas:% s
  • ', $ screen-> bas). sprintf ('
  • Föräldrabas:% s
  • ', $ screen-> parent_base). sprintf ('
  • Föräldrafil:% s
  • ', $ screen-> parent_file). sprintf ('
  • Hook suffix:% s
  • ', $ hook_suffix). '
'; // Lägg till global $ hook_suffix till krokstammarna $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Om add_meta_boxes eller add_meta_boxes_ screen_id används, lista dessa också om (did_action ('add_meta_boxes_'. $ Screen_id)) $ krokar [] = 'add_meta_boxes_'. $ Screen_id; om (did_action ('add_meta_boxes')) $ krokar [] = 'add_meta_boxes'; // Hämta lista HTML för krokarna $ hooks = '
    krokar
  • '. implodera ('
  • ', $ krokar). '
'; // Kombinera $ variabler lista med $ krokar listan. $ help_content = $ variabler. $ krokar; // Lägg till hjälppanel $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Skärminformation', 'content' => $ help_content,)); returnera $ contextual_help;