¿Por qué no funciona el argumento container en wp_nav_menu()?

6 feb 2015, 09:44:12
Vistas: 920
Votos: 0

El siguiente código muestra un menú pero falta la etiqueta contenedora <nav>.

$menu_settings = array(
    'menu' => 'Packages',
    'container' => 'nav',
    'container_class' => '',
    'container_id' => '',
    'menu_class' => 'menu',
    'menu_id' => '',
    'echo' => true,
    'fallback_cb' => 'wp_page_menu',
    'before' => '',
    'after' => '',
    'link_before' => '',
    'link_after' => '',
    'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    'depth' => 0,
    'walker' => '',
    'theme_location' => 'primary' );

?>

      <?php wp_nav_menu( $menu_settings ); ?>

Estos menús están registrados en functions.php:

register_nav_menus( array(
 'primary' => __( 'Menú de Paquetes', 'nameoftheme'),
 'secondary' => __( 'Menú de Servicios', 'nameoftheme' ),
) );

Solo se renderiza un <ul> con elementos de lista. Los elementos de lista tampoco están envueltos.

5
Comentarios

Por favor, indenta tu código correctamente. En pantallas más pequeñas, la mayor parte de tu código se sale de los límites y por lo tanto es ilegible :-)

Pieter Goosen Pieter Goosen
6 feb 2015 09:46:22

Hecho. Debo señalar, sin embargo, que desarrolladores menos razonables podrían molestarse al que les digan que 'indenten correctamente' :-)

codecowboy codecowboy
6 feb 2015 09:52:52

Eso es cierto, pero de nuevo depende de ellos si quieren ser ayudados. La mayoría de usuarios como yo estamos en dispositivos con pantallas pequeñas como teléfonos móviles, y si el código no está correctamente indentado o formateado, no podemos leerlo y por lo tanto simplemente ignoramos la pregunta. Como desarrollador deberías saber lo frustrante que es leer código y depurarlo si tiene problemas de formato. :-) Esto es solo mi opinión y un consejo. Es cierto, la legibilidad de una pregunta influye en la cantidad de retroalimentación positiva que recibes

Pieter Goosen Pieter Goosen
6 feb 2015 09:59:13

El código parece estar bien. Acabo de probarlo y efectivamente genera el contenedor de navegación y también los elementos envueltos.

User User
6 feb 2015 10:12:44

¿Esto sigue sucediendo después de desactivar todos los plugins y cambiar a uno de los temas Twenty*? Por favor, sigue el proceso enlazado para identificar el plugin o tema en conflicto.

kaiser kaiser
10 feb 2015 10:37:40
Todas las respuestas a la pregunta 1
1

Como estoy utilizando el framework de temas roots, esta línea elimina el argumento del contenedor:

function roots_nav_menu_args($args = '') {
  $roots_nav_menu_args = array();
  $roots_nav_menu_args['container'] = false; // Elimina el contenedor por defecto del menú
  if (!$args['items_wrap']) {
    $roots_nav_menu_args['items_wrap'] = '<ul class="%2$s">%3$s</ul>'; // Establece el envoltorio de items predeterminado
  }
  if (!$args['depth']) {
    $roots_nav_menu_args['depth'] = 2; // Establece la profundidad del menú a 2 niveles
  }
  return array_merge($args, $roots_nav_menu_args); // Combina los argumentos
}
add_filter('wp_nav_menu_args', 'roots_nav_menu_args'); // Aplica el filtro a los argumentos del menú
6 feb 2015 13:09:53
Comentarios

Esto ahora se puede encontrar en Soil: add_theme_support('soil-nav-walker');

Sven Sven
5 dic 2018 07:00:06