web-dev-qa-db-fra.com

wp nav menu: ajoute des attributs aux éléments de menu

J'essaie de voir s'il est possible d'attacher un attribut à un élément de menu de navigation wp.
Pour démontrer, ce php:

<?php
    wp_nav_menu(array(
    'menu'  =>  'main',
    'container' => false
));
?>

afficherait un menu comme suit:

<ul id="menu-main" class="menu">
<li id="menu-item-01" class="menu-item">Menu 01</li>
<li id="menu-item-02" class="menu-item">Menu 02</li>
<li id="menu-item-03" class="menu-item">Menu 03</li>
<li id="menu-item-04" class="menu-item">Menu 04</li>
</ul>

mais ce que je voudrais vraiment, c'est quelque chose comme ça:

<ul id="menu-main" class="menu">
<li id="menu-item-01" class="menu-item" data-hook="01">Menu 01</li>
<li id="menu-item-02" class="menu-item" data-hook="02">Menu 02</li>
<li id="menu-item-03" class="menu-item" data-hook="03">Menu 03</li>
<li id="menu-item-04" class="menu-item" data-hook="04">Menu 04</li>
</ul>

Est-ce que c'est possible? L'attribut ne doit pas obligatoirement être data-hook. Je l'utilise seulement à titre d'exemple, mais simplement quelque chose que je peux utiliser comme identifiant.

1
user1374796

Vous pouvez utiliser un Walker personnalisé pour ajouter des attributs aux éléments de menu.

Fondamentalement, vous ajoutez un paramètre 'walker' aux options wp_nav_menu () et appelez une instance d'une classe améliorée:

wp_nav_menu(
    array (
        'menu'            => 'main-menu',
        'container'       => FALSE,
        'container_id'    => FALSE,
        'menu_class'      => '',
        'menu_id'         => FALSE,
        'depth'           => 1,
        'walker'          => new Description_Walker
    )
);

La classe Description_Walker étend Walker_Nav_Menu et modifie la fonction start_el( &$output, $item, $depth, $args ).

  1. Du Codex:
    http://codex.wordpress.org/Function_Reference/wp_nav_menu#Using_a_Custom_Walker_Function

  2. J'ai trouvé ce tutoriel, vous le trouverez peut-être très utile:
    http://www.kriesi.at/archives/improve-your-wordpress-navigation-menu-output

3
Mike Madern