it-swarm.com.de

Aktuelle Klasse im Admin-Menü mit add_submenu_page ()

Ich arbeite daran, ein Administrationsmenü in WordPress für ein Plugin zu erstellen. Ich habe das Menü mit add_menu_page () erfolgreich registriert und es wird erwartungsgemäß in der Seitenleiste angezeigt. Ich habe auch einige Abschnitte innerhalb des Menüs mit add_submenu_page () hinzugefügt.

Es scheint, dass WordPress (mit 3.05) nicht korrekt angibt, welcher Menüpunkt als "aktuell" aktiviert werden soll.

Wenn ich dem Dashboard-Hauptmenü eine Testseite hinzufüge, wird Folgendes angezeigt:

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". In meinem 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 speziellen Code bereitstellen, damit dies in meinem eigenen Menü funktioniert?

Aktualisiert mit Codebeispielen

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 wie erwartet verhält. Danke für deine Kommentare.

1
Scott

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' );

Grundsätzlich gilt: Verwenden Sie keine Ganzseiten-Links mit admin.php? ... als Seiten-Slug. Vor allem, wenn Sie Rückrufe weiterleiten, verwenden Sie einfach einen Slug, keine Seitenadresse.

2
wyrfel