Pregunta

Estoy trabajando en la creación de un menú de administración dentro de WordPress para un complemento. He registrado con éxito el menú usando add_menu_page () y se muestra en la barra lateral como se esperaba. También he agregado un par de secciones dentro del menú usando add_submenu_page ().

Parece que WordPress (Running 3.05) no indica correctamente qué elemento de menú debe activarse como "actual".

Cuando agrego una página de prueba al menú del tablero principal, esto es lo que veo:

http://dl.dropbox.com/u/3019972/wp-screen1.png

Como puede ver, la página actual es visualmente correcta dentro del menú y se le da una clase de "corriente". Sin embargo, en mi propio menú se ve así:

http://dl.dropbox.com/u/3019972/wp-screen2.png

En este ejemplo, esperaría que se resalte "Dashboard".

¿Es esto simplemente un error de WordPress? ¿O necesito proporcionar un código especial para que esto funcione dentro de mi propio menú?

Actualizado con ejemplos de código

El código que estoy usando para agregar y crear menús se ve así:

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

}

He comentado el código que funciona y el código que no se comporta como espero. Gracias por tus comentarios.

¿Fue útil?

Solución

Prueba esto:

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

Esencialmente: no use enlaces de página completos con admin.php? ... como la babosa de la página. Especialmente si está pasando devoluciones de llamada, solo use una babosa, no una dirección de página.

Licenciado bajo: CC-BY-SA con atribución
scroll top