2010-02-22 12 views
7

En el menú Páginas en la página de administración de WordPress, Tengo este diseño:resaltar manualmente Wordpress elemento del menú de administración

Páginas

  • Editar(url: edit-pages.php)
  • Añadir Nuevo(url: page-new.php)
  • Páginas especiales (URL: edit-pages.php especiales páginas = true)

como se puede ver, he añadido un nuevo elemento de submenú llamado Páginas especiales que es más o menos un enlace a Editar página con filtro personalizado. Debido a que Wordpress usa el nombre del archivo para identificar y resaltar el elemento del submenú, cada vez que hago clic en Páginas especiales, se selecciona la opción Editar submenú. ¿Hay alguna forma de obligar a Wordpress a seleccionar el elemento del menú Páginas especiales?

Saludos

Respuesta

3

Solución: uso $ submenu_file variables

$ submenu_file = "? Edit-pages.php especiales páginas = true"

+0

puede u por favor enviar un ejemplo de cómo se usa? No puedo hacerlo funcionar – bluantinoo

5

Para aclarar aún más la respuesta de Ken Vu, edite las variables globales $submenu_file y $parent_file. Por ejemplo, para resaltar su página:

global $submenu_file; 
$submenu_file = "edit-pages.php?special-pages=true"; 

Si es necesario cambiar el elemento de nivel superior resaltada, utilice $parent_file. Por ejemplo, resalte la página de configuración "Escritura":

global $parent_file; 
global $submenu_file; 
$parent_file = 'options-general.php'; 
$submenu_file = 'options-writing.php'; 
+1

¿Puede decirme dónde colocar estos códigos idealmente? No pude hacer que funcionaran. – Musa

+0

Intenté implementar esto dentro de la función callaback de 'add_meta_boxes()', pero no está resaltando mi menú de administrador de nivel superior. Puedo agregar que no tengo ningún submenú, solo un menú de administrador de nivel superior. –

+1

Lo tengo para que funcione correctamente. Escribiré otra respuesta para que otras personas puedan encontrarla más fácilmente. –

2

Gracias Ken Vu y Jonathan Brinley. Usando sus respuestas, finalmente obtuve el resaltado de mi menú de administración para que funcione correctamente. Mientras luchaba un poco para que funcionara, pensé en publicar todo el resultado aquí, para que otras personas puedan encontrarlo más fácilmente:

La idea es llamar al filtro parent_file (no documentado, como muchas partes de Wordpress desafortunadamente) En mi caso, estaba agregando un menú personalizado en lugar del predeterminado generado al crear un tipo de publicación personalizado.

En mi código postal personalizado, llamo la acción add_meta_boxes. Dentro de este gancho, expido mi llamada a la parent_file filtro:

add_filter('parent_file',  array(&$this, 'highlight_admin_menu')); 

_

entonces esto es cómo mi función hightlight_admin_menu parece:

function highlight_admin_menu($some_slug){ 

    global $parent_file; 

    $parent_file = 'post.php?post=149&action=edit'; 

    return $parent_file; 
} 

_

Esto hizo que mi menú para resaltar correctamente. Intente jugar con su propio código para saber dónde emitir el código add_filter('parent_file', ...).Encuentre un poco de código ejecutado solo en esa carga de página particular, pero lo suficientemente pronto como para que todavía sea posible modificar la variable $parent_file.

Espero que esto ayude!

3

solución mejor:

add_filter('parent_file', 'my_plugin_select_submenu'); 
function my_plugin_select_submenu($file) { 
     global $plugin_page; 
     if ('__my-current-submenu-slug__' == $plugin_page) { 
      $plugin_page = '__my-submenu-slug-to-select__'; 
     } 
     return $file; 
} 
+0

En mi caso, estaba vinculando a la página de administración de taxonomía de administración, la taxonomía no estaba asociada a ningún tipo de publicación. tu código funcionó a la perfección. gracias. – wesamly

1

Para cambiar el elemento resaltado del menú de un elemento de submenú, el filtro adecuado es submenu_file.

add_filter('submenu_file', 'menuBold'); 

static function menuBold($submenu_file) 
{ 
    if (checkProperPage($_GET)) { 
     // The address of the link to be highlighted 
     return 'post-new?post_type=foobar&foo=bar'; 
    } 

    // Don't change anything 
    return $submenu_file; 
} 

El cheque sucede en el expediente del WP ~/wp-admin/menu-header.php en la línea 194 (Wordpress 4.5.3):

if (isset($submenu_file)) { 
    if ($submenu_file == $sub_item[2]) 
     $class[] = 'current'; 
... 
} 
Cuestiones relacionadas