私はWordPress内でプラグインの管理メニューを作成しようとしています。 add_menu_page()を使用してメニューを正常に登録しましたが、サイドバーに表示されるはずです。 add_submenu_page()を使用してメニュー内にいくつかのセクションも追加しました。
WordPress(3.05を実行している)は、どのメニュー項目を "current"としてアクティブにすべきかを正しく示していないようです。
メインのダッシュボードメニューにテストページを追加すると、これがわかります。
http://dl.dropbox.com/u/3019972/wp-screen1.png
ご覧のとおり、現在のページはメニュー内で視覚的に正しく、「現在」のクラスが与えられています。しかし私自身のメニューでは、このようになります。
http://dl.dropbox.com/u/3019972/wp-screen2.png
この例では、「ダッシュボード」が強調表示されていると思います。
これは単なるWordPressのバグですか?それとも私自身のメニュー内でこれを機能させるために特別なコードを提供する必要がありますか?
コード例で更新
私がメニューの追加や作成に使っているコードは、こんな感じです。
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' );
}
機能するコードと期待したとおりに動作しないコードについてコメントしました。コメントしてくれてありがとう。
これを試して:
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' );
基本的に、admin.phpのフルページリンクを使用しないでください...ページスラッグとして。特にコールバックを渡す場合は、ページアドレスではなくスラッグを使用するだけです。