Como muchos dijeron antes: "Un buen ciudadano de WordPress solo carga sus archivos donde se necesitan". Este principio se aplica tanto al front-end como al back-end (admin). No hay justificación para cargar archivos CSS y JS en cada página de administración cuando solo los necesita en una sola página que creó. Afortunadamente, hacer las cosas de la manera correcta está a solo una función de distancia.
"Nunca incluya archivos CSS o JS en todas las páginas de administración. Esto causará conflictos con otros complementos".
Dado que casi todas las páginas de administración tienen una URL única, no es realmente difícil detectar cuándo se carga una determinada página y luego (y solo entonces) incluir los archivos JS y CSS que necesitamos. Nosotros podemos usar $ _SERVER ['REQUEST_URI']
, o en muchos casos, la $ _GET ['action']
variable. Sin embargo, hay una forma mucho más fácil, limpia y estandarizada de hacerlo. Saluda a la get_current_screen
función.
get_current_screen
función:exista función
La función para verificarlo es una buena idea si desea proporcionar una alternativa.admin_init
o en eso
ganchos porque se inicializa después de que se llaman los ganchos.WP_Screen
Objeto con mucha información, pero estará interesado principalmente en el carné de identidad
propiedad del objeto.Supongamos que su complemento tiene una página de opciones en el menú de configuración que creó con:
add_options_page ('My Plugin', 'My Plugin', 'manage_options', 'my_plugin', 'my_plugin_options');
Necesita un poco de CSS y JavaScript extra en esa página, así que también agrega este código:
// ¡Código incorrecto abajo! ¡No copie / pegue! add_action ('admin_enqueue_scripts', 'my_plugin_scripts'); function my_plugin_scripts () wp_enqueue_style ('farbtastic'); wp_enqueue_script ('farbtastic');
¡Eso es malo! ¡No hagas eso! El fragmento anterior incluirá CSS y JS para el selector de color Farbtastic en cada página de administración. Si otros complementos desean deshacerse de tus archivos incluidos en sus páginas, deben utilizarlos. wp_dequeue_ *
Funciones para encolarlos. Eso es realmente innecesario y grosero de nosotros porque podemos escribir mejor código!
add_action ('admin_enqueue_scripts', 'my_plugin_scripts'); function my_plugin_scripts () // Incluya JS / CSS solo si estamos en nuestra página de opciones si (is_my_plugin_screen ()) wp_enqueue_style ('farbtastic'); wp_enqueue_script ('farbtastic'); // Comprueba si estamos en nuestra página de opciones. La función es_my_plugin_screen () $ screen = get_current_screen (); if (is_object ($ screen) && $ screen-> id == 'settings_page_my_plugin') return true; else devolver falso;
Si echa un vistazo a nuestro código mejorado, puede ver que solo agregamos uno Si
declaración y una función simple - is_my_plugin_screen
que comprueba si estamos en la página de opciones de nuestro plugin. La variable $ pantalla
sostiene el WP_Screen
objeto que tiene muchas propiedades pero solo estamos interesados en el carné de identidad
uno. Ese carné de identidad
consiste en un prefijo "settings_page_
", que es el mismo para todas las páginas de configuración, y una cadena"mi_plugin
"que es exclusivo de nuestro complemento porque lo definimos como el cuarto parámetro en el add_options_page
Llamada de función.
El código es muy simple y fácilmente adaptable a cualquier pantalla de administración. Para ver qué es el ID de la pantalla actual, simplemente descargue el contenido de $ pantalla
con:
eco ''. print_r (get_current_screen (), true). '';
get_current_screen
después en eso
para saber cuándo está visible la pantalla de administración y solo así incluir archivos adicionales.>