web-dev-qa-db-fra.com

Walker nav supprimer sous-menu ul d'une certaine profondeur

Je souhaite supprimer les classes sub-menu ul et .menu-item-has-children lorsque la profondeur du menu est supérieure ou égale à 2.

Donc, je veux seulement un menu avec 3 sous-menus au maximum. Les autres éléments enfants seront toujours affichés dans le menu mais pas dans un sous-menu.

Avec wp_nav_menu ('profondeur' => 3), il n’ajoute pas tous les éléments. Donc, je pense que je dois utiliser un navigateur de déambulateur personnalisé.

Je ne sais pas comment faire avec start_lvl. Quel est le moyen de compter la profondeur et de supprimer ul et classes ...

Mon but est de changer ce menu:

  • menu-item-has-children
    • menu-item-1
    • menu-item-2
    • menu-item-has-children
      • menu-item-3
      • menu-item-4
      • menu-item-has-children
        • menu-item-5
        • menu-item-6

à ce menu:

  • menu-item-has-children
    • menu-item-1
    • menu-item-2
    • menu-item-has-children
      • menu-item-3
      • menu-item-4
      • menu-item-has-children
      • menu-item-5
      • menu-item-6

Et le comportement indésirable fournit par l'option wp_nav_menu ('profondeur' => 3) dans wordpress

  • menu-item-has-children
    • menu-item-1
    • menu-item-2
    • menu-item-has-children
      • menu-item-3
      • menu-item-4
      • menu-item-has-children

J'ai essayé avec ça:

function start_lvl(&$output, $depth) { 
    if($depth >= 2) {
        $output .=  '';
    } else {
        $output .= "<ul class='sub-menu'>";
    }
}

Cela fonctionne presque, mais cela crée un problème avec ul dans mon menu de navigation.

1
freaky

À première vue, et sans rien tester, le code que vous possédez devrait fonctionner, mais je suppose que vous avez un certain nombre de </ul> parasites dans votre balisage. Vous devez faire presque la même chose pour la méthode end_lvl.

function end_lvl(&$output, $depth) { 
    if($depth >= 2) {
        $output .=  '';
    } else {
        $output .= "</ul>";
    }
}

Je ne sais pas si c'est le problème avec votre megamenu ou non.

3
s_ha_dum