Sfat rapid Obțineți cârligele ecranului curent

Ori de câte ori este posibil, este mai bine să utilizați cârligele specifice ecranului, decât cele mai generice init, admin_init, admin_footer etc (cu excepția cazului în care doriți ca apelul dvs. specific să ruleze pe fiecare ecran). În acest sfat rapid vom analiza modul în care puteți obține cu ușurință cârligele de ecran pentru o anumită pagină.


Cârlige specifice paginii

Cârligele specifice paginii oferă cel mai eficient (și cel mai curat) mod de a direcționa un apel invers doar pentru ecranul (ele) de care aveți nevoie. Ei includ:

  • page-a sarcinii cârlig - numit înainte de încărcarea pe ecran (logica pentru aceasta poate fi găsită aici)
  • admin_print_styles- page cârlig - acțiune pentru tipărirea stilurilor în din pagina de administrare
  • admin_print_scripts- page cârlig - acțiune pentru imprimarea de scripturi în din pagina de administrare
  • admin_head- page cârlig - acțiune declanșată în interiorul din pagina de administrare
  • admin_footer- page cârlig - acțiune declanșată chiar deasupra închiderii etichetă pe pagina de administrare

Dar care este valoarea lui Page-cârlig pentru o anumită pagină? Privind la sarcină-* cârlig în special veți găsi că există o logică destul de complicat în determinarea Page-cârlig. În special, acesta tratează paginile de tip plug-in personalizat diferit de paginile "principale" (cum ar fi paginile tip post și taxonomie) și, din motive de compatibilitate înapoi, va folosi mai multe cârlige pentru același ecran atunci când editează mesaje, pagini sau categorii.

Regulile generale pentru valoarea Page-cârlig pot fi rezumate după cum urmează:

  • Pentru paginile de admin personalizate adăugate prin add_menu_page () (și funcțiile conexe) este ecran ID (valoarea returnată de add_menu_page ())
  • Pentru pagina de admin listă postările din orice tip de postare, este edit.php
  • În pagina "adăugați o nouă" a oricărui tip de postare, este post-new.php
  • În pagina de editare a oricărui tip de postare, este post.php
  • Pentru paginile de taxonomie este edit-tags.php

Cu toate acestea, cârligul de pagină este generat, este în cele din urmă stocat în global $ hook_suffix.


Obțineți cu ușurință cârlige de ecran

În general, aceste reguli sunt suficiente pentru a determina cârligele specifice paginii. Dar când lucrez cu ei, deseori găsesc că ajută la o referință ușoară. Pentru a crea această referință ușoară, vom adăuga un panou la fila "ajutor" din partea dreaptă sus a fiecărui ecran, care va afișa detaliile ecranului (ID ecran, bază ecran și cel mai util, ecranul Suport cârlig). Acesta va lista, de asemenea, cârlige specifice ecranului.

Panourile din tab-ul de ajutor au fost introduse în 3.3, deci acest lucru va funcționa numai pentru versiunile WordPress 3.3+. Pentru a adăuga panoul pe care îl folosim contextual_help filtru. Acesta este un filtru pentru scopuri de compatibilitate înapoi, deci nu filtrăm nimic. În schimb, folosim WP_Screen :: add_help_tab metodă.

 / * Adăugați ajutor contextual * / add_filter ('contextual_help', 'wptuts_screen_help', 10, 3); funcția wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // Funcția add_help_tab pentru ecran a fost introdusă în WordPress 3.3. dacă (! method_exists ($ screen, 'add_help_tab')) returnați $ contextual_help; / * ... genera conținut de ajutor ... * / $ help_content = "; $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => $ help_content,)); return $ contextual_help;

Pentru a genera conținutul de ajutor, luăm globalizarea $ hook_suffix și adăugați-l la cârligele menționate mai sus. De asemenea, primim o listă a detaliilor ecranului, care sunt stocate ca proprietăți ale WP_Screen obiect.

 global $ hook_suffix; // Afișați proprietățile ecranului $ variables = '
    Ecranul variabilelor ". sprintf ('
  • ID-ul ecranului:% s
  • ', $ screen_id). sprintf ('
  • Ecranul bazei de date:% s
  • ', $ ecran-> bază). sprintf ('
  • Baza de baza:% s
  • ', $ screen-> parent_base). sprintf ('
  • Fișierul părinte:% s
  • ', $ screen-> parent_file). sprintf ('
  • Suport sufix:% s
  • ', $ hook_suffix). '
„; // Adăugați suma globală $ hook_suffix la cârligele stem $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Dacă se utilizează add_meta_boxes sau add_meta_boxes_ screen_id, listați și ele dacă (did_action ('add_meta_boxes_'. $ Screen_id)) $ hooks [] = 'add_meta_boxes_'. $ Screen_id; dacă (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Get List HTML pentru cârlige $ hooks = '
    Hooks
  • ". implozie( '
  • ', cârlige de $). '
„; // Combinați lista variabilelor $ cu lista de $ hooks. $ help_content = $ variabile. $ cârlige;

Ceea ce ne va da ceva de genul:


Codul în întregime

Puteți plasa următoarele în plug-in-ul de utilitate al site-ului dvs. sau (dacă trebuie), tematica dvs. functions.php. Asigurați-vă că redenumiți wptuts_screen_help la ceva unic pentru tine.

 add_action ('contextual_help', 'wptuts_screen_help', 10, 3); funcția wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // Funcția add_help_tab pentru ecran a fost introdusă în WordPress 3.3. dacă (! method_exists ($ screen, 'add_help_tab')) returnați $ contextual_help; global $ hook_suffix; // Afișați proprietățile ecranului $ variables = '
    Ecranul variabilelor ". sprintf ('
  • ID-ul ecranului:% s
  • ', $ screen_id). sprintf ('
  • Ecranul bazei de date:% s
  • ', $ ecran-> bază). sprintf ('
  • Baza de baza:% s
  • ', $ screen-> parent_base). sprintf ('
  • Fișierul părinte:% s
  • ', $ screen-> parent_file). sprintf ('
  • Suport sufix:% s
  • ', $ hook_suffix). '
„; // Adăugați suma globală $ hook_suffix la cârligele stem $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Dacă se utilizează add_meta_boxes sau add_meta_boxes_ screen_id, listați și ele dacă (did_action ('add_meta_boxes_'. $ Screen_id)) $ hooks [] = 'add_meta_boxes_'. $ Screen_id; dacă (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Get List HTML pentru cârlige $ hooks = '
    Hooks
  • ". implozie( '
  • ', cârlige de $). '
„; // Combinați lista variabilelor $ cu lista de $ hooks. $ help_content = $ variabile. $ cârlige; // Adăugați panoul de ajutor $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Informații despre ecran', 'content' => $ help_content;)); returnează $ contextual_help;
Cod