Método correcto para incluir hojas de estilo en paneles de WordPress
¿Cuál es la forma correcta de incluir una hoja de estilo con mis paneles de opciones en wp-admin para un plugin o tema dado? En otras palabras, la hoja de estilo que da formato a los paneles.
Me refiero a que, en mi código de plantilla de panel, estoy haciendo algo como...
<style type="text/css">
@import url("../wp-content/plugins/myplugin/panels/style.css");
</style>
...pero sospecho que esto no funcionará en algunas instalaciones de WordPress debido a las rutas y demás, y podría no funcionar en el futuro si WP decide cambiar wp-content por otro nombre.

function load_myplugin_wp_admin_style(){
// Registrar y encolar el estilo CSS para el panel de administración
wp_register_style( 'myplugin_wp_admin_css', plugins_url( '/myplugin/panels/style.css' ), false, '1.0.0' );
wp_enqueue_style( 'myplugin_wp_admin_css' );
}
// Añadir la acción para cargar los estilos en el admin
add_action('admin_enqueue_scripts', 'load_myplugin_wp_admin_style');

El método de mejores prácticas para encolar hojas de estilo en el administrador es engancharse al hook específico de tu página de apariencia, usando admin_print_styles-{hook}
, donde {hook}
= {admin_page}-{menu_slug}
.
Asumiré:
- Esto es un Tema
- Estás usando correctamente una página de apariencia, mediante
add_appearance_page()
- Tu
$menu_slug
eswpse48416-settings
El hook, entonces, es: admin_print_styles-appearance_page_wpse48416-settings
:
<?php
function wpse48416_admin_style(){
wp_register_style( 'wpse48416_admin_css', get_template_directory_uri() . '/css/admin.css' );
wp_enqueue_style( 'wpse48416_admin_css' );
}
add_action( 'admin_print_styles-appearance_page_wpse48416-settings', 'wpse48416_admin_style' );
?>
Para un Plugin, simplemente necesitas usar el {page}
correcto, dependiendo de qué función de menú de administración uses para registrar tu página de ajustes, por ejemplo settings_page
para add_settings_page()
.

¿Qué debo hacer si estoy usando add_menu_page() y add_submenu_page() para agregar mis paneles de administración?

"¿Qué debo hacer si estoy usando add_menu_page() y add_submenu_page() para agregar mis paneles de administración" - bueno, el mejor práctica como primer paso sería cambiar a add_theme_page()
o add_settings_page()
. (sonrisa). Pero, creo que para add_menu_page()
o add_submenu_page()
, deberías usar admin_page
en lugar de appearance_page
.

¡Descubrí que tienen unos ejemplos fantásticos al final de estas páginas para resolver mi problema, y ya funciona! ¡Hurra! Ve a http://codex.wordpress.org/Function_Reference/, luego busca "wp_enqueue_script" y "wp_enqueue_style".

Por cierto, dijiste que esta era la mejor práctica, pero ¿sigue siendo la mejor práctica? Nota que acabo de descubrir esto: http://codex.wordpress.org/Plugin_API/Action_Reference/admin_enqueue_scripts

Sí, estoy seguro de que es la mejor práctica usar un submenú apropiado, en lugar de un menú de nivel superior, para las páginas de administración de Temas/Plugins.

En mi caso, tengo al menos 4 formularios para mi plugin, y uno de esos formularios es una página de lista para seleccionar entre 50 elementos. Así que elegí un menú de nivel superior. Además, creo que es confuso en WordPress cuando instalas un plugin llamado "X" y luego su menú se llama "Enlaces", y no lo sabes y buscas en Ajustes, solo para terminar confundido. WordPress debe arreglar esto en el futuro.

¿Sabías que puedes crear pestañas para tu página de configuración? Además: puedes colocar un enlace a la página de configuración en el plugin_meta_row del panel de control -> página de Plugins, para que los usuarios no tengan que buscar tu página de configuración. :)

continuemos esta discusión en el chat
