Menú de Navegación de 3 Niveles No Muestra Todos los Niveles

11 mar 2012, 04:37:38
Vistas: 28.6K
Votos: 0

Tengo un menú de navegación de 3 niveles que se muestra junto a todas las páginas del sitio excepto en la página de inicio. El problema es que solo 2 de mis 3 niveles se muestran en el menú cuando lo visualizo usando wp_nav_menu. He intentado especificar el parámetro depth y sin él sin éxito. Estoy usando el tema Roots si eso ayuda.

Vea a continuación una imagen de cómo está el menú en la sección Apariencia > Menús.

captura de pantalla del menú de navegación de WordPress

El problema como se puede ver arriba es que "Production Solutions" y "Avalanche" se muestran, pero los elementos hijos debajo de Avalanche no se están mostrando. Y no es un problema de estilo, los niveles terceros simplemente no se están generando en absoluto. No estoy usando ningún walker personalizado ni nada, esto es a través de las funciones estándar de registro y visualización del menú de navegación.

Este es el código que registra todos mis menús de navegación:

register_nav_menus(array(
    'accordion_navigation' => __('Navegación de Página en Acordeón', 'roots'),
    'footer_navigation_left' => __('Navegación Pie de Página Izquierda', 'roots'),
    'footer_navigation_solutions' => __('Soluciones de Productos Pie de Página', 'roots'),
    'footer_navigation_news' => __('Noticias y Eventos Pie de Página', 'roots'),
    'footer_navigation_about' => __('Acerca de Pie de Página', 'roots')
));

En mi plantilla de página tengo este código para mostrar el menú:

wp_nav_menu(array('theme_location' => 'accordion_navigation'));

¿Me estoy perdiendo algo aquí?

2
Comentarios

¿Qué sucede si configuras 'depth' => 0?

mor7ifer mor7ifer
11 mar 2012 05:01:32

No hay suerte, tristemente :(

Dwayne Charrington Dwayne Charrington
11 mar 2012 05:21:09
Todas las respuestas a la pregunta 2
2

Finalmente solucioné el problema, se debía a un valor predeterminado en el tema Roots que sobrescribía el parámetro de profundidad para un hook llamado wp_nav_menu_args (que ni siquiera sabía que era un hook). El código se encuentra en el directorio raíz del tema en la carpeta "inc", en un archivo llamado roots-cleanup.php.

El código original se ve así:

function roots_nav_menu_args($args = '') {
  $args['container']  = false;
  $args['depth']      = 2;
  $args['items_wrap'] = '<ul class="nav">%3$s</ul>';
  if (!$args['walker']) {
    $args['walker'] = new Roots_Nav_Walker();
  }
  return $args;
}

Como pueden ver, el valor de profundidad está establecido en 2, incluso especificar un parámetro de profundidad en la función wp_nav_menu no parece hacer la diferencia, esta misma función está sobrescribiendo los argumentos del menú para la profundidad.

Todo lo que hice fue aumentar la profundidad a un valor más alto que nunca alcanzaría, como 8, de esta manera:

function roots_nav_menu_args($args = '') {
  $args['container']  = false;
  $args['depth']      = 8;
  $args['items_wrap'] = '<ul class="nav">%3$s</ul>';
  if (!$args['walker']) {
    $args['walker'] = new Roots_Nav_Walker();
  }
  return $args;
}

La lección aprendida aquí es SIEMPRE asegurarse de que un plugin o, en este caso, un hook del framework del tema no esté modificando algo. Espero que esto ayude a alguien más que esté usando el tema Roots e intentando crear menús multinivel.

11 mar 2012 10:22:49
Comentarios

Solo una nota, quizás quieras crear un child theme o usar Roots para no sobrescribir funciones principales si alguna vez actualizas el tema.

Brooke. Brooke.
11 mar 2012 11:32:18

Excelente consejo, gracias. Aunque dudo que el tema vaya a ser actualizado.

Dwayne Charrington Dwayne Charrington
11 mar 2012 12:46:31
0

Si existe un menú más profundo en HTML pero no se muestra al pasar el mouse, agrega este código en tu archivo CSS:

.dropdown-menu li:hover a+ul {
     display: block;
     top: 80%; // opcional
}
9 ene 2014 11:20:24