Classe courante dans le menu d'administration à l'aide add_submenu_page ()
-
16-10-2019 - |
Question
Je travaille sur la création d'un menu d'administration au sein de WordPress pour un plug-in. Je l'ai enregistré avec succès le menu à l'aide add_menu_page () et il montre dans la barre latérale comme prévu. J'ai également ajouté quelques sections dans le menu à l'aide add_submenu_page ().
Il semble que WordPress (en cours d'exécution 3,05) n'indique pas correctement quel élément le menu doit être activé comme « courant ».
Quand j'ajouter une page de test au menu principal du tableau de bord est ce que je vois:
http://dl.dropbox.com/u/3019972/wp- screen1.png
Comme vous pouvez le voir la page en cours est visuellement correct dans le menu et est donné une classe de « courant ». Cependant sur mon propre menu, il ressemble à ceci:
http://dl.dropbox.com/u/3019972/wp- screen2.png
Dans cet exemple, j'attendre « Tableau de bord » à mettre en valeur.
Est-ce simplement un bug WordPress? ou dois-je fournir un code spécial pour faire ce travail dans mon propre menu?
Mise à jour avec des exemples de code
Le code que je utilise pour ajouter et créer des looks menus comme ceci:
add_action('admin_menu','my_admin_menu');
function my_admin_menu() {
// this test works as expected
// add_submenu_page( 'index.php', 'test', 'test', 'read', 'admin.php?page=plugin-dashboard','my_pluggin_dashboard' );
// my main menu menu
add_menu_page(__('My Plugin', 'myplugin'),__('My Plugin', 'myplugin'), 'edit_posts','admin.php?page=plugin-dashboard','my_plugin_dashboard','icon');
// dashboard submenu - this fails to highlight with current
add_submenu_page('admin.php?page=plugin-dashboard', __('Dashboard','myplugin'), __('Dashboard','myplugin'), 'edit_posts', 'admin.php?page=plugin-dashboard', 'my_plugin_dashboard' );
// settings submenu - this fails to highlight with current
add_submenu_page('admin.php?page=plugin-dashboard', __('Settings','myplugin'), __('Settings','myplugin'), 'manage_options', 'admin.php?page=my-plugin-settings', 'my_plugin_settings' );
}
J'ai commenté le code qui fonctionne et le code qui ne se comporte pas comme je l'attends. Merci pour vos commentaires.
La solution
Essayez ceci:
add_menu_page(__('My Plugin', 'myplugin'),__('My Plugin', 'myplugin'), 'edit_posts','my-plugin-dashboard','my_plugin_dashboard','icon');
// dashboard submenu - this fails to highlight with current
add_submenu_page('my-plugin-dashboard', __('Dashboard','myplugin'), __('Dashboard','myplugin'), 'edit_posts', 'my-plugin-dashboard', 'my_plugin_dashboard' );
// settings submenu - this fails to highlight with current
add_submenu_page('my-plugin-dashboard', __('Settings','myplugin'), __('Settings','myplugin'), 'manage_options', 'my-plugin-settings', 'my_plugin_settings' );
Pour l'essentiel: ne pas utiliser les liens avec pleine page admin.php ... comme la limace page?. Surtout si vous callbacks de passage, il suffit d'utiliser une limace, pas une adresse de page.