web-dev-qa-db-fra.com

wp_nav_menu, classe de marcheur, catégories en tant que classes de li

OK j'essaye de montrer mon menu principal alors j'utilise le code suivant:

<?php $defaults = array(
    'theme_location'  => '',
    'menu'            => '', 
    'container'       => false,
    '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="unstyled pull-right %2$s">%3$s</ul>',
    'depth'           => 0,
    'walker'          => new description_walker()
); ?>
<?php wp_nav_menu( $defaults ); ?>

Le menu est rempli avec les noms de catégorie (pas de pages) et il affiche les éléments suivants:

<ul id="menu-principal" class="unstyled pull-right menu">
<li id="menu-item-597" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-597"><a href="#">menu</a></li>
<li id="menu-item-595" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-595"><a href="#">menu</a></li>
<li id="menu-item-596" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-596"><a href="#">menu</a></li>
<li id="menu-item-593" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-593"><a href="#">menu</a></li>
<li id="menu-item-594" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-594"><a href="#">menu</a></li>
<li id="menu-item-592" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-592"><a href="#">menu</a></li>
<li id="menu-item-591" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-591"><a href="#">menu</a></li>
<li id="menu-item-592" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-592"><a href="#">menu</a></li>
<li id="menu-item-591" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-591"><a href="#">menu</a></li>
</ul>

Je voudrais remplacer toutes ces classes li par le nom de la catégorie afin d'essayer d'utiliser une classe de randonneur dans functions.php: https://Gist.github.com/1053467

Donc, j'ai un minimum de choses mais je ne sais pas comment ajouter les classes. class = "category-categoryname" (c'est-à-dire class = "category-photography").

Merci beaucoup pour votre temps et votre aide.

1
Gab

votre classe de marcheur est presque parfaite pour ce dont vous avez besoin @Gab.

au lieu de la ligne 21:

        $output     .= '<li>';

déplacez-le juste avant la ligne 38

$output .= apply_filters(
        'walker_nav_menu_start_el' [...]

et changez-le en quelque chose comme

$output .= $indent . '<li id="nav-menu-item-'. $item->ID . '" class="'. $title . '">';

et vous devriez avoir le nom de la catégorie comme première classe de votre li

Vous voyez, comme vous avez construit le titre Nice title $ title, vous pouvez l'utiliser pour créer la balise li, puis créez la balise comme auparavant.


modifier:

 $mycatid = $item->object_id;
 $category = get_category($mycatid );
 $mycatslug = $category->slug;
 $output .= $indent . '<li id="nav-menu-item-'. $item->ID . '" class="'. $mycatslug . '">';
1
pcarvalho