Alors aujourd'hui, j'ai commencé à travailler sur mon premier thème Wordpress et jusqu'à présent, cela a été très amusant. Cependant, j'ai eu du mal à faire en sorte que wp_nav_menu () fasse ce que je veux.
Voici ce que je veux:
<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>
En regardant dans la documentation, je m'attendrais à ce que l'appel suivant fasse ce que je veux:
<?php wp_nav_menu(array( 'container' => 'nav', 'container_id' => 'topnav' )); ?>
Mais au lieu de cela je reçois ceci:
<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>
Pour moi, il semble que mes paramètres personnalisés soient ignorés car la sortie de wp_nav_menu()
est exactement la même. Dois-je activer quelque chose pour permettre ceci ou y at-il autre chose?
MODIFIER
Curieusement, si je change de menu_class
, cela change la classe de la div (je m'attendais à ce que la div soit le conteneur), mais changer de menu_id
ne fait rien.
EDIT 2
Même en allant dans nav-menu-template.php et en changeant les valeurs par défaut pour container, container_id, container_class, menu_id ne fait rien. Changer menu_class en yyy changera la classe du div de menu en yyy.
j'ai eu le problème de sauvegarde: c'est parce que si vous ne créez pas le menu dans l'admin wordpress, utilisez une méthode de repli et créez le menu à partir de toutes les pages actives ... et si cela se produit, les options de wp_nav_menu ne sont pas utilisées .. .
donc: il suffit de créer le menu dans l'admin et vous pouvez changer le wrapper-tag en "nav"
Tout d’abord, vous ne pourrez pas obtenir de WordPress une sortie d’élément <nav>
utilisant des fonctions natives. <nav>
est une balise HTML5, et WordPress est conçu pour générer une sortie XHTML ... c'est-à-dire aucun élément <nav>
.
Edit: Apparemment, la fonction autorise nav
... ... mais gardez à l'esprit que le reste du noyau WordPress est toujours conçu pour générer du XHTML, pas du HTML5 ... veillez à ce que votre site soit correctement validé .
Essayez de supprimer cette référence ... cela peut être à l'origine de l'erreur qui ignore votre instruction 'container_id' => 'topnav'
. Si les choses fonctionnent correctement sans la référence à nav
, vous devriez avoir ceci:
<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>
L'API de menu est partiellement cassé, vous ne pouvez pas compter sur la sortie. Il existe différents billets dans Trac à ce sujet. J'ai seulement fait une recherche rapide, mais une solution à votre problème est peut-être expliquée dans l'un d'entre eux:
je ne sais pas si quelqu'un cherche toujours à résoudre ce problème - mais je viens d'arriver ici en essayant de trouver la réponse moi-même - je pensais partager ma solution :)
Voulait également utiliser l'élément <nav> au lieu de l'élément <div> et le résoudre en supprimant l'élément <div>, comme indiqué sur cette page, wordpress codex:http://codex.wordpress.org/ Référence_fonction/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' );
?>
Ajouté à mon fichier functions.php, marqué le fichier de thème avec la balise <nav> et tout a bien fonctionné pour moi;) espérons que cela aide :)