Cómo asignar un ID a un menú en WordPress

11 ene 2013, 15:05:08
Vistas: 14.6K
Votos: -1

El siguiente código no produce un UL con ID "nav". Solo genera:

<div class="menu"><ul>

Este es el código:

wp_nav_menu( array( 'theme_location' => 'menu-1', 'container_id'    => 'nav';

Según el WP Codex esto debería funcionar. ¿Por qué no funciona?

Versión de WP = 3.5

Actualización

Ahora tengo:

wp_nav_menu( array( 'theme_location' => 'menu-1', 'items_wrap' => '<ul id="nav">%3$s</ul>', 'menu_id' => 'nav'));

pero esto tampoco funciona.

2
Comentarios

asegúrate de que tu tema no filtre wp_nav_menu_args y sobrescriba tus configuraciones.

Milo Milo
13 ene 2013 05:35:30

@Milo. No hay nada en functions.php sobre esto.

Steve Steve
13 ene 2013 08:50:27
Todas las respuestas a la pregunta 4
3

Según esa página del Codex, necesitas usar menu_id. container_id solo afecta al div que lo envuelve.

11 ene 2013 15:11:44
Comentarios

Creo que tienes razón, pero aún está produciendo <div class="menu">

Steve Steve
11 ene 2013 15:29:26

sí, según el codex, pero no funcionó

GusDeCooL GusDeCooL
10 ene 2015 17:21:35

esta es la respuesta correcta

Nate Beers Nate Beers
4 ago 2017 19:03:28
4

El parámetro correcto para el ul es menu_id, y para el contenedor container_id. Pero el ul solo funciona si pasas …

'<ul id="%1$s" class="%2$s">%3$s</ul>'

… como argumento items_wrap.

Puedes codificar el valor directamente así:

wp_nav_menu(
    array (
    'items_wrap'      => '<ul id="nav">%3$s</ul>'
    'theme_location' => 'top-menu'
    )
);

Ver ¿Existe documentación para el argumento "items_wrap" de wp_nav_menu?

11 ene 2013 17:10:29
Comentarios

Gracias @toscho, pero esto tampoco funcionó.

Steve Steve
13 ene 2013 05:22:25

Ahora tengo wp_nav_menu( array( 'theme_location' => 'menu-1', 'items_wrap' => '<ul id="nav">%3$s</ul>', 'menu_id' => 'nav'));

Steve Steve
13 ene 2013 05:23:44

@Steve Desactiva todos los plugins. Estás rompiendo algo muy seriamente. Mi solución funciona en todos los casos.

fuxia fuxia
13 ene 2013 09:25:37

He desactivado todos los plugins y el problema persiste: la salida es <div class="menu"><ul>

Steve Steve
14 ene 2013 13:41:00
1

Según mi entendimiento, menu-1 debe ser el ID de tu menú. Por favor, lee sobre los parámetros aquí y proporciona los parámetros adecuados.

En mi opinión, tu código debería ser así:

wp_nav_menu( array( 'menu' => 'menu-1', 'container_id'    => 'nav' ));
11 ene 2013 15:21:54
Comentarios

el parámetro menu acepta un id de la base de datos, no un id CSS. Es un id CSS el que deseo asignar al UL.

Steve Steve
11 ene 2013 15:30:57
0

Esto podría ser útil, me ayudó a entender.

    <?php wp_nav_menu( array(
            'menu' => 0,
            'container' =>false,
            'menu_class' => 'nav',
            'echo' => true,
            'before' => '',
             'after' => '',
             'link_before' => '',
             'link_after' => '',
             'depth' => 0,
            'walker' => new description_walker())
             );?>

Esto asignaría IDs aleatorios a tus menús cuando los crees. Espero que haya sido útil, no estoy seguro si entendí correctamente la pregunta.

11 ene 2013 16:34:33