Consejo rápido Obtén los ganchos de la pantalla actual

Siempre que sea posible, es mejor utilizar ganchos específicos de pantalla en lugar de más genéricos. en eso, admin_init, admin_footer etc. (a menos que desee específicamente que su devolución de llamada se ejecute en todas las pantallas). En esta sugerencia rápida veremos cómo puede obtener fácilmente los ganchos de pantalla para cualquier página en particular.


Ganchos específicos de página

Los enlaces específicos de la página ofrecen la forma más eficiente (y limpia) de dirigir una devolución de llamada solo para la pantalla (s) para la que lo necesita. Incluyen:

  • load- page-hook - se llama antes de cargar la pantalla (la lógica para esto se puede encontrar aquí)
  • admin_print_styles- page-hook - Acción para imprimir estilos en el. de la página de administración
  • admin_print_scripts- page-hook - Acción para imprimir guiones en el de la página de administración
  • admin_head- page-hook - acción desencadenada dentro de la de la página de administración
  • admin_footer- page-hook - acción desencadenada justo por encima del cierre etiqueta en la página de administración

Pero cual es el valor de gancho de página para cualquier página en particular? Mirando a la carga-* en particular, encontrará que hay una lógica bastante complicada en la determinación de la gancho de página. En particular, trata las páginas de complementos personalizados de forma diferente a las páginas 'centrales' (como las páginas de tipo de publicación y taxonomía) y, por el bien de la compatibilidad con versiones anteriores, utilizará varios enlaces para la misma pantalla al editar publicaciones, páginas o categorías..

Las reglas generales para el valor de gancho de página Se puede resumir como sigue:

  • Para las páginas de administrador personalizadas añadidas a través de add_menu_page () (y funciones relacionadas) es el ID de pantalla (el valor devuelto por add_menu_page ())
  • Para las publicaciones de la página de administración de cualquier tipo de publicación, es edit.php
  • En la página 'agregar nuevo' de cualquier tipo de publicación, es post-new.php
  • En la página de edición de cualquier tipo de publicación, es post.php
  • Para las páginas de taxonomía es edit-tags.php

Sin embargo, el enlace de la página se genera, se almacena en última instancia en el global $ hook_suffix.


Consigue fácilmente los ganchos de una pantalla

En general, esas reglas son suficientes para determinar los ganchos específicos de la página. Pero cuando trabajo con ellos a menudo encuentro que es útil tener una referencia fácil. Para crear esta referencia fácil, agregaremos un panel a la pestaña "ayuda" en la parte superior derecha de cada pantalla que mostrará una lista de los detalles de la pantalla (ID de pantalla, base de pantalla y, lo más útil, la pantalla). sufijo de gancho). También listará los ganchos específicos de la pantalla..

Los paneles en la pestaña de ayuda se introdujeron en 3.3, por lo que esto solo funcionará para las versiones de WordPress 3.3+. Para añadir el panel utilizamos el contextual_help filtrar. Este es un filtro para propósitos de compatibilidad con versiones anteriores, por lo que en realidad no filtramos nada. En su lugar usamos el WP_Screen :: add_help_tab método.

 / * Agregar ayuda contextual * / add_filter ('contextual_help', 'wptuts_screen_help', 10, 3); function wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // La función add_help_tab para la pantalla se introdujo en WordPress 3.3. if (! method_exists ($ screen, 'add_help_tab')) devuelve $ contextual_help; / * ... generar contenido de ayuda ... * / $ help_content = "; $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Información de la pantalla', 'contenido' => $ help_content,)); return $ contextual_help;

Para generar el contenido de ayuda, tomamos el global $ hook_suffix y adjuntarlo a los tallos de gancho mencionados anteriormente. También obtenemos una lista de los detalles de la pantalla, que se almacenan como propiedades de la WP_Screen objeto.

 $ hook_suffix global; // Listar propiedades de pantalla $ variables = '
    Variables de pantalla '. sprintf ('
  • ID de pantalla:% s
  • ', $ screen_id). sprintf ('
  • Base de la pantalla:% s
  • ', $ pantalla-> base). sprintf ('
  • Base de padres:% s
  • ', $ screen-> parent_base). sprintf ('
  • Archivo principal:% s
  • ', $ screen-> parent_file). sprintf ('
  • Sufijo de gancho:% s
  • ', $ hook_suffix). '
'; // Agregue global $ hook_suffix a los enlaces $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Si se usan add_meta_boxes o add_meta_boxes_ screen_id, enumérelas también si (did_action ('add_meta_boxes_'. $ Screen_ides)) $ hooks [] = 'add_meta_boxes_'. $ screen_id; if (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Obtener el HTML de la lista para los ganchos $ ganchos = '
    Manos
  • '. implosionar
  • ', $ ganchos). '
'; // Combinar $ variables list con $ hooks list. $ help_content = $ variables. $ ganchos;

Lo que nos dará algo como lo siguiente:


El código completo

Puede colocar lo siguiente en el complemento de utilidad de su sitio, o (si es necesario), su tema funciones.php. Asegúrate de cambiar el nombre wptuts_screen_help a algo único para ti.

 add_action ('contextual_help', 'wptuts_screen_help', 10, 3); function wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // La función add_help_tab para la pantalla se introdujo en WordPress 3.3. if (! method_exists ($ screen, 'add_help_tab')) devuelve $ contextual_help; $ hook_suffix global; // Listar propiedades de pantalla $ variables = '
    Variables de pantalla '. sprintf ('
  • ID de pantalla:% s
  • ', $ screen_id). sprintf ('
  • Base de la pantalla:% s
  • ', $ pantalla-> base). sprintf ('
  • Base de padres:% s
  • ', $ screen-> parent_base). sprintf ('
  • Archivo principal:% s
  • ', $ screen-> parent_file). sprintf ('
  • Sufijo de gancho:% s
  • ', $ hook_suffix). '
'; // Agregue global $ hook_suffix a los enlaces $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- $ hook_suffix") ; // Si se usan add_meta_boxes o add_meta_boxes_ screen_id, enumérelas también si (did_action ('add_meta_boxes_'. $ Screen_ides)) $ hooks [] = 'add_meta_boxes_'. $ screen_id; if (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Obtener el HTML de la lista para los ganchos $ ganchos = '
    Manos
  • '. implosionar
  • ', $ ganchos). '
'; // Combinar $ variables list con $ hooks list. $ help_content = $ variables. $ ganchos; // Agregar el panel de ayuda $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Información de la pantalla', 'contenido' => $ help_content,)); devuelve $ contextual_help;