Hurtig Tips Få gjeldende vindues kroker

Hvor mulig er det bedre å bruke skjermspesifikke kroker i stedet for mer generisk i det, admin_init, admin_footer etc. (med mindre du spesifikt vil at tilbakeringingen skal kjøre på hver skjerm). I dette raske tipset ser vi på hvordan du enkelt kan få skjermhakene til en bestemt side.


Side spesifikke kroker

Sidespesifikke kroker gir den mest effektive (og reneste) måten å målrette en tilbakeringing for bare skjermbildene du trenger den til. De inkluderer:

  • last side-krok - kalt før skjermbelastningen (logikken for dette finner du her)
  • admin_print_styles- side-krok - handling for utskriftstiler i på admin siden
  • admin_print_scripts- side-krok - handling for utskrift av skript i på admin siden
  • admin_head- side-krok - handling utløst inne i på admin siden
  • admin_footer- side-krok - handling utløst like over avslutningen tag på admin siden

Men hva er verdien av Side-krok for en bestemt side? Ser på laste-* krok spesielt du vil finne at det er en ganske innviklet logikk ved å bestemme Side-krok. Spesielt behandler den tilpassede plugin-sider forskjellig fra "kjerne" -sidene (for eksempel posttype og taksonomi-sider), og for bakoverkompatibilitetens skyld vil det bruke flere kroker for samme skjerm når du redigerer innlegg, sider eller kategorier.

De generelle regler for verdien av Side-krok kan oppsummeres som følger:

  • For tilpassede admin sider lagt til via add_menu_page () (og tilhørende funksjoner) er det skjerm-ID (verdien returnert av add_menu_page ())
  • For admin siden oppføring innlegg av en post type, er det edit.php
  • På "Legg til ny" siden av en posttype, er det post-new.php
  • På redigeringssiden av en posttype er den post.php
  • For taksonomi sider er det redigerings tags.php

Men siden kroken er generert, er den til slutt lagret i det globale $ hook_suffix.


Lett få en skjerm kroker

Generelt er disse reglene nok til å bestemme sidespesifikke kroker. Men når jeg jobber med dem, finner jeg ofte det hjelper å få en enkel referanse. For å lage denne enkle referansen legger vi til et panel på "hjelp" -fanen øverst til høyre på hver skjerm som vil vise skjermens detaljer (skjerm-ID, skjermbase og mest hensiktsmessig, skjermens krok suffiks). Det vil også vise skjermens spesifikke kroker.

Paneler i hjelpefanen ble introdusert i 3.3, så dette vil bare fungere for WordPress versjon 3.3+. For å legge til panelet bruker vi contextual_help filter. Dette er et filter for bakoverkompatibilitetsformål, så vi filtrerer ikke noe. I stedet bruker vi WP_Screen :: add_help_tab metode.

 / * Legg til kontekstuell hjelp * / add_filter ('contextual_help', 'wptuts_screen_help', 10, 3); funksjon wptuts_screen_help ($ contextual_help, $ screen_id, $ skjerm) // Funksjonen add_help_tab for skjerm ble introdusert i WordPress 3.3. hvis (! method_exists ($ skjerm, 'add_help_tab')) returnere $ contextual_help; / * ... generer hjelpeinnhold ... * / $ help_content = "; $ screen-> add_help_tab (array ('id' => 'wptuts-skjermhjelp', 'title' => 'Skjerminformasjon', 'content' => $ help_content,)), returner $ contextual_help;

For å generere hjelpinnholdet tar vi global $ hook_suffix og legg det til krokstamlene nevnt ovenfor. Vi får også en liste over skjermens detaljer, som er lagret som egenskapene til WP_Screen gjenstand.

 global $ hook_suffix; // Liste-skjermegenskaper $ variables = '
    Skjermvariabler '. sprintf ('
  • Skjerm ID:% s
  • ', $ screen_id). sprintf ('
  • Skjermbase:% s
  • ', $ skjerm-> base). sprintf ('
  • Foreldrebase:% s
  • ', $ skjerm-> parent_base). sprintf ('
  • Foreldrefil:% s
  • ', $ skjerm-> parent_file). sprintf ('
  • Krok suffiks:% s
  • ', $ hook_suffix). '
'; // Legg til global $ hook_suffix til krokstenglene $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Hvis add_meta_boxes eller add_meta_boxes_ screen_id er brukt, oppgi disse også hvis (did_action ('add_meta_boxes_'. $ Screen_id)) $ kroker [] = 'add_meta_boxes_'. $ Screen_id; hvis (did_action ('add_meta_boxes')) $ kroker [] = 'add_meta_boxes'; // Få Liste HTML for krokene $ hooks = '
    kroker
  • '. implodere ('
  • ', $ kroker). '
'; // Kombiner $ variabler liste med $ kroker liste. $ help_content = $ variabler. $ kroker;

Som vil gi oss noe som følger:


Koden i full

Du kan plassere følgende i nettstedets verktøytillegg, eller (hvis du må), temaet ditt functions.php. Pass på at du endrer navn wptuts_screen_help til noe unikt for deg.

 add_action ('contextual_help', 'wptuts_screen_help', 10, 3); funksjon wptuts_screen_help ($ contextual_help, $ screen_id, $ skjerm) // Funksjonen add_help_tab for skjerm ble introdusert i WordPress 3.3. hvis (! method_exists ($ skjerm, 'add_help_tab')) returnere $ contextual_help; global $ hook_suffix; // Liste-skjermegenskaper $ variables = '
    Skjermvariabler '. sprintf ('
  • Skjerm ID:% s
  • ', $ screen_id). sprintf ('
  • Skjermbase:% s
  • ', $ skjerm-> base). sprintf ('
  • Foreldrebase:% s
  • ', $ skjerm-> parent_base). sprintf ('
  • Foreldrefil:% s
  • ', $ skjerm-> parent_file). sprintf ('
  • Krok suffiks:% s
  • ', $ hook_suffix). '
'; // Legg til global $ hook_suffix til krokstenglene $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Hvis add_meta_boxes eller add_meta_boxes_ screen_id er brukt, oppgi disse også hvis (did_action ('add_meta_boxes_'. $ Screen_id)) $ kroker [] = 'add_meta_boxes_'. $ Screen_id; hvis (did_action ('add_meta_boxes')) $ kroker [] = 'add_meta_boxes'; // Få Liste HTML for krokene $ hooks = '
    kroker
  • '. implodere ('
  • ', $ kroker). '
'; // Kombiner $ variabler liste med $ kroker liste. $ help_content = $ variabler. $ kroker; // Legg til hjelpepanel $ skjerm-> add_help_tab (array ('id' => 'wptuts-skjermhjelp', 'title' => 'Skjerminformasjon', 'innhold' => $ help_content,)); returner $ contextual_help;