it-swarm-es.com

wp_nav_menu () contenedor personalizado y container_id

Así que hoy comencé a trabajar en mi primer tema de Wordpress y hasta ahora ha sido muy divertido. Sin embargo, he tenido dificultades para lograr que wp_nav_menu () haga lo que quiero.

Esto es lo que quiero:

<nav id="topnav" class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</nav>

Buscando en la documentación, esperaría que la siguiente llamada haga lo que quiero:

<?php wp_nav_menu(array( 'container' => 'nav', 'container_id' => 'topnav' )); ?>

Pero en cambio me sale esto:

<div class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</div>

Para mí, parece que mis parámetros personalizados se están ignorando, ya que la salida de wp_nav_menu() es exactamente la misma. ¿Hay algo que deba activar en algún lugar para habilitar esto o hay algo más en juego?

EDITAR

Curiosamente, si cambio menu_class altera la clase de div (esperaba que div sea el contenedor) pero cambiar menu_id no hace nada.

EDIT 2

Incluso entrar en nav-menu-template.php y cambiar los valores predeterminados para container, container_id, container_class, menu_id no hace nada. Cambiar menu_class a yyy cambiará la clase div del menú a yyy.

3
Tom Savage

tuve el problema de guardar: es porque si no creas el menú en la aplicación wordpress, utiliza un método de reserva y crea el menú de todas las páginas activas ... y si esto sucede, no se usan las opciones de wp_nav_menu. .

así que: simplemente cree el menú en el administrador y puede cambiar la etiqueta de envoltorio a "nav"

6
user2802

En primer lugar, no podrá hacer que WordPress genere cualquier tipo de elemento <nav> usando funciones nativas. <nav> es una etiqueta HTML5, y WordPress está diseñado para generar una salida XHTML ... es decir, ningún elemento <nav>.


Edite: Aparentemente, la función permite nav ... pero tenga en cuenta que el resto del núcleo de WordPress todavía está diseñado para generar XHTML, no HTML5 ... asegúrese de que su sitio se valida correctamente .


Intente eliminar esa referencia ... podría estar causando el error que está ignorando su instrucción 'container_id' => 'topnav'. Si las cosas funcionan bien sin la referencia a nav, deberías tener esto:

<div id="topnav" class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</div>
1
EAMann
1
hakre

no estoy seguro de si alguien todavía está tratando de resolver esto, pero acabo de llegar tratando de encontrar la respuesta por mí mismo. Pensé en compartir mi solución :)

También quería usar el elemento <nav> en lugar del elemento <div> y resolverlo eliminando el <div>, como se indica en esta página, wordpress codex:http://codex.wordpress.org/ Function_Reference/wp_nav_menu :

<?php
function my_wp_nav_menu_args( $args = '' )
{
    $args['container'] = false;
    return $args;
} // function

add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );
?>

Agregado a mi archivo functions.php, marcado el archivo de tema con la etiqueta <nav> y todo funcionó bien para mí;) espero que esto ayude :)

0
user3160