Текущий класс в меню администратора с использованием add_submenu_page ()

wordpress.stackexchange https://wordpress.stackexchange.com/questions/9832

Вопрос

Я работаю над созданием меню администрирования в 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? ... как слизняк страницы. Особенно, если вы передаете обратные вызовы, просто используйте слизняк, а не адрес страницы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top