Tengo dos funciones simples que cargan cosas usando wp_enqueue_style()
y wp_enqueue_script()
, algo así:
function admin_custom_css()
{ wp_enqueue_style( 'stylesheet_name', 'stylesheet.css') };
function admin_custom_js
{ wp_enqueue_script( 'javascript_file', 'script.js') };
... y algunas páginas de administración, creadas con add_menu_page()
yadd_submenu_page()
function my_menu() {
add_menu_page('Page 1', 'bar', 'something', 'else', 'foo');
add_submenu_page( 'theme_menu', 'Subpage 1', 'Subpage', 'something', 'else', 'foo');
}
add_action('admin_menu', 'my_menu');
¿Cómo cargo mis dos funciones solo en estas páginas?
En este momento estoy usando:
add_action('admin_init', 'admin_custom_css' );
add_action('admin_init', 'admin_custom_js' );
Pero carga mis archivos en cada página de administración, lo cual no es nada agradable.
¿Puedo hacer esto a través de una línea simple functions.php
o tener que ponerlos en cola dentro de mis páginas por separado (prefiero la primera opción, ya que tendría que editar muchas funciones de creación de páginas de administrador).
¡Gracias!
wp-admin
wp-enqueue-script
admin-menu
wp-enqueue-style
admin-init
Wordpressor
fuente
fuente
Respuestas:
add_menu_page
yadd_submenu_page
ambos devuelven el "sufijo de gancho" de la página, que puede usarse para identificar la página con ciertos ganchos. Como tal, puede usar ese sufijo en combinación con los ganchos variablesadmin_print_styles-{$hook_suffix}
yadmin_print_scripts-{$hook_suffix}
dirigirse específicamente a estas páginas.Creo que este es un método limpio para agregar todo esto porque todo se maneja dentro de una función. Si decide eliminar esta funcionalidad, simplemente elimine la llamada a la única función.
fuente
admin_print_scripts()
estados "admin_print_scripts
no debe usarse para poner en cola estilos o scripts ". La respuesta de @TomAuger es en realidad la correcta, aunque no óptima. Sin embargo, sería beneficioso si el equipo de WP agregara unadmin_enqueue_scripts-(hookname)
gancho ...El problema con la respuesta de @tollmanz es que, dado que estás desconectando los enlaces -print-styles y -print-scripts, debes generar el HTML para cargar tus scripts manualmente. Esto no es óptimo, ya que no obtienes la buena dependencia y las versiones que vienen con
wp_enqueue_script()
ywp_enqueue_style()
. Tampoco te permite poner cosas en el pie de página si ese es un lugar mejor para ellos.Entonces, volviendo a la pregunta del OP: ¿cuál es la mejor manera de asegurarme de que pueda poner en cola JS / CSS solo en páginas de administración específicas?
Desconecta la acción "cargar - {$ my_admin_page}" para hacer cosas solo cuando se carga la página de administración de tu complemento específico, y luego
Descuelgue la acción "admin_enqueue_scripts" para agregar correctamente sus
wp_enqueue_script
llamadas.Parece un poco molesto, pero en realidad es muy fácil de implementar. Desde la parte superior:
fuente
load-$hook
gancho que activa mioption_page_actions
función a la que puedo agregar muchos otros ganchos / filtros, etc. Debido a que esas acciones solo se invocan en la página de elección, los ganchos más allá de ese punto no necesitan usar los ganchos de espacios de nombres (como has mostrado), que es mucho más eficiente e intuitivo.Si lo usa
get_current_screen()
, puede detectar en qué página se encuentra. Hay un ejemplo en el artículo códice que he vinculado la que muestra cómo usarget_current_screen()
conadd_options_page()
, este método funcionará para cualquier página de administración.fuente
Podría tomar la respuesta y ampliarla un poco, permitiendo también el uso condicional ...
@tollmanz
Ejemplo:
fuente
Como @ mor7ifer mencionó anteriormente, puede usar la función nativa de WordPress get_current_screen () . Si recorre la salida de esta función, por ejemplo:
... notará una clave llamada base . Utilizo esto para detectar en qué página estoy y poner en cola, poner en cola así:
fuente
Me preguntaba lo mismo. Hay una versión moderna que usa
admin_enqueue_scripts
:fuente
De la documentación :
Lo mismo con
admin_print_styles
.fuente
fuente
Para hacerlo, primero debe encontrar el nombre de la página de administración. Agregue
admin_enqueue_scripts
conwp_die($hook)
y vaya a su página de complemento específica, verá el nombre de la página.Ahora copie el nombre de la página y úselo en condiciones para cargar los scripts en la página específica.
fuente