Aktuelle Klasse im Admin -Menü mit add_submenu_page ()
-
16-10-2019 - |
Frage
Ich arbeite daran, ein Verwaltungsmenü in WordPress für ein Plugin zu erstellen. Ich habe das Menü erfolgreich mit add_menu_page () registriert und es wird wie erwartet in der Seitenleiste angezeigt. Ich habe auch einige Abschnitte im Menü mit add_submenu_page () hinzugefügt.
Es scheint, dass WordPress (Auslauf 3.05) nicht korrekt angibt, welcher Menüelement als "aktuell" aktiviert werden sollte.
Wenn ich dem Haupt -Dashboard -Menü eine Testseite hinzufüge, sehe ich:
http://dl.dropbox.com/u/3019972/wp-screen1.png
Wie Sie sehen können, ist die aktuelle Seite im Menü visuell korrekt und erhält eine Klasse von "aktuell". Auf meinem eigenen Menü sieht es jedoch so aus:
http://dl.dropbox.com/u/3019972/wp-screen2.png
In diesem Beispiel würde ich erwarten, dass "Dashboard" hervorgehoben wird.
Ist das einfach ein WordPress -Fehler? Oder muss ich einen speziellen Code bereitstellen, um diese Arbeit in meinem eigenen Menü zu erstellen?
Aktualisiert mit Code -Beispielen
Der Code, den ich zum Hinzufügen und Erstellen von Menüs verwende, sieht folgendermaßen aus:
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' );
}
Ich habe den Code kommentiert, der funktioniert, und den Code, der sich nicht so erwartet. Danke für deine Kommentare.
Lösung
Versuche dies:
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' );
Im Wesentlichen: Verwenden Sie keine vollständigen Seitenlinks mit admin.php? ... als Seitenschnecken. Vor allem, wenn Sie Rückrufe verabschieden, verwenden Sie einfach eine Schnecke, keine Seitenadresse.