Suggerimento rapido ottieni i ganci della schermata corrente

Ove possibile, è preferibile utilizzare ganci specifici per lo schermo piuttosto che generici dentro, admin_init, admin_footer ecc. (a meno che non si desideri specificamente eseguire la richiamata su ogni schermo). In questo suggerimento rapido vedremo come è possibile ottenere facilmente i ganci dello schermo per qualsiasi pagina specifica.


Pagina Ganci specifici

I ganci specifici della pagina offrono il modo più efficiente (e più pulito) di scegliere come target un callback solo per gli schermi per i quali è necessario. Loro includono:

  • del carico page-hook - chiamato prima del caricamento dello schermo (la logica per questo può essere trovata qui)
  • admin_print_styles- page-hook - azione per la stampa di stili nel della pagina di amministrazione
  • admin_print_scripts- page-hook - azione per la stampa di script in della pagina di amministrazione
  • admin_head- page-hook - azione innescata all'interno del della pagina di amministrazione
  • admin_footer- page-hook - azione innescata appena sopra la chiusura tag sulla pagina di amministrazione

Ma qual è il valore di Page-hook per ogni pagina particolare? Guardando il caricare-* in particolare scoprirai che c'è una logica abbastanza complicata nel determinare il Page-hook. In particolare, tratta pagine di plug-in personalizzate in modo diverso dalle pagine 'core' (come il tipo di post e le pagine di tassonomia) e, per motivi di compatibilità con le versioni precedenti, userà più hook per lo stesso schermo quando si modificano post, pagine o categorie.

Le regole generali per il valore di Page-hook può essere riassunto come segue:

  • Per le pagine di amministrazione personalizzate aggiunte tramite add_menu_page () (e funzioni correlate) è il ID schermo (il valore restituito da add_menu_page ())
  • Per la pagina di amministrazione che elenca i post di qualsiasi tipo di post, lo è edit.php
  • Nella pagina "aggiungi nuovo" di qualsiasi tipo di post, lo è post-new.php
  • Sulla pagina di modifica di qualsiasi tipo di post, lo è post.php
  • Per le pagine di tassonomia lo è edit-tags.php

Tuttavia, viene generato l'hook della pagina, che viene infine archiviato nel globale $ hook_suffix.


Ottieni facilmente i ganci di uno schermo

In generale queste regole sono sufficienti per determinare i ganci specifici della pagina. Ma quando lavoro con loro trovo spesso che aiuta ad avere un riferimento facile. Per creare questo semplice riferimento, aggiungeremo un pannello alla scheda "help" in alto a destra di ogni schermata che elencherà i dettagli dello schermo (ID della schermata, base dello schermo e, più utilmente, lo schermo suffisso gancio). Elencherà anche i ganci specifici dello schermo.

I pannelli nella scheda della guida sono stati introdotti in 3.3, quindi funzionerà solo con le versioni di WordPress 3.3+. Per aggiungere il pannello usiamo il contextual_help filtro. Questo è un filtro ai fini della retrocompatibilità, quindi non filtriamo nulla. Invece usiamo il WP_Screen :: add_help_tab metodo.

 / * Aggiungi l'aiuto contestuale * / add_filter ('contextual_help', 'wptuts_screen_help', 10, 3); function wptuts_screen_help ($ contestual_help, $ screen_id, $ screen) // La funzione add_help_tab per lo schermo è stata introdotta in WordPress 3.3. if (! method_exists ($ screen, 'add_help_tab')) restituisce $ contextual_help; / * ... genera contenuto di aiuto ... * / $ help_content = "; $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Screen Information', 'content' => $ help_content,)); return $ contextual_help;

Per generare il contenuto della guida, prendiamo il globale $ hook_suffix e appendilo ai gambi dell'amo menzionati sopra. Abbiamo anche una lista dei dettagli della schermata, che sono memorizzati come proprietà di WP_Screen oggetto.

 globale $ hook_suffix; // Proprietà dello schermo elenco $ variabili = '
    Variabili dello schermo '. sprintf ('
  • ID schermo:% s
  • ', $ screen_id). sprintf ('
  • Screen base:% s
  • ', $ screen-> base). sprintf ('
  • Base genitore:% s
  • ', $ screen-> parent_base). sprintf ('
  • File principale:% s
  • ', $ screen-> parent_file). sprintf ('
  • Suffisso suffisso:% s
  • ', $ hook_suffix). '
'; // Aggiungi global $ hook_suffix ai ganci hook $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Se si utilizzano add_meta_boxes o add_meta_boxes_ screen_id, elencare anche questi se (did_action ('add_meta_boxes_'. $ Screen_id)) $ hooks [] = 'add_meta_boxes_'. $ Screen_id; if (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Ottieni lista HTML per gli hook $ hooks = '
    ganci
  • '. implodere( '
  • ', $ ganci). '
'; // Combina l'elenco $ variables con l'elenco $ hooks. $ help_content = $ variabili. $ ganci;

Quale ci darà qualcosa come il seguente:


Il codice in pieno

È possibile inserire quanto segue nel plug-in di utilità del proprio sito o (se necessario), i temi del proprio tema functions.php. Assicurati di rinominare wptuts_screen_help a qualcosa di unico per te.

 add_action ('contextual_help', 'wptuts_screen_help', 10, 3); function wptuts_screen_help ($ contestual_help, $ screen_id, $ screen) // La funzione add_help_tab per lo schermo è stata introdotta in WordPress 3.3. if (! method_exists ($ screen, 'add_help_tab')) restituisce $ contextual_help; globale $ hook_suffix; // Proprietà dello schermo elenco $ variabili = '
    Variabili dello schermo '. sprintf ('
  • ID schermo:% s
  • ', $ screen_id). sprintf ('
  • Screen base:% s
  • ', $ screen-> base). sprintf ('
  • Base genitore:% s
  • ', $ screen-> parent_base). sprintf ('
  • File principale:% s
  • ', $ screen-> parent_file). sprintf ('
  • Suffisso suffisso:% s
  • ', $ hook_suffix). '
'; // Aggiungi global $ hook_suffix ai ganci hook $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Se si utilizzano add_meta_boxes o add_meta_boxes_ screen_id, elencare anche questi se (did_action ('add_meta_boxes_'. $ Screen_id)) $ hooks [] = 'add_meta_boxes_'. $ Screen_id; if (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Ottieni lista HTML per gli hook $ hooks = '
    ganci
  • '. implodere( '
  • ', $ ganci). '
'; // Combina l'elenco $ variables con l'elenco $ hooks. $ help_content = $ variabili. $ ganci; // Aggiungi pannello di aiuto $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Screen Information', 'content' => $ help_content,)); restituisce $ contextual_help;