WordPress : Comment ajouter nav_menu_css_class personnalisé à certains menus uniquement ?

Publié par Jean-Michel le

Je souhaite ajouter une classe CSS personnalisée aux éléments de menu. Jusqu’à présent, je l’ai fait fonctionner en utilisant le crochet de filtre nav_menu_css_class. Cependant, je souhaite ajouter cette classe aux éléments d’un menu spécifique uniquement. Alors, à quoi doit ressembler une condition pour affecter un menu spécifique (par exemple, ‘custom-menu’ dans theme_location ‘footer_menu’) uniquement ?

function add_footer_nav_item_class( $classes, $item ) {
  // I am looking for a condition here
  if ($item belongs to 'custom-menu'){
    $classes[] = "footer--menu-item";
    return $classes;
  }
}
add_filter( 'nav_menu_css_class' , 'add_footer_nav_item_class' , 10, 2 );

Solution n°1 trouvée

Vous avez juste besoin du troisième argument $args, dont l’une des propriétés est theme_location:

function wpse_218377_nav_menu_css_class( $classes, $item, $args ) {
    if ( ! empty( $args->theme_location ) && $args->theme_location === 'custom-menu' ) {
        $classes[] = 'footer--menu-item';
    }

    // ALWAYS return, not from inside the if
    return $classes;
}

add_filter( 'nav_menu_css_class' , 'wpse_218377_nav_menu_css_class' , 10, 3 );

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *