Текущий класс в меню администратора с использованием add_submenu_page ()
-
16-10-2019 - |
Вопрос
Я работаю над созданием меню администрирования в WordPress для плагина. Я успешно зарегистрировал меню, используя add_menu_page (), и оно показывает в боковой панели, как и ожидалось. Я также добавил пару разделов в меню, используя add_submenu_page ().
Похоже, что WordPress (запуск 3.05) неправильно указывает, какой элемент меню следует активировать как «текущий».
Когда я добавляю тестовую страницу в главное меню приборной панели, это то, что я вижу:
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? ... как слизняк страницы. Особенно, если вы передаете обратные вызовы, просто используйте слизняк, а не адрес страницы.