Vous ne pouvez pas le faire avec wp_nav_menu, car il génère des éléments de liste et vous générerez un balisage non valide avec votre code.
Essayez plutôt d' utiliser wp_get_nav_menu_items () .
Une solution rapide pour un menu déroulant avec un déambulateur personnalisé:
class Walker_Nav_Menu_Dropdown extends Walker_Nav_Menu{
// don't output children opening tag (`<ul>`)
public function start_lvl(&$output, $depth){}
// don't output children closing tag
public function end_lvl(&$output, $depth){}
public function start_el(&$output, $item, $depth, $args){
// add spacing to the title based on the current depth
$item->title = str_repeat(" ", $depth * 4) . $item->title;
// call the prototype and replace the <li> tag
// from the generated markup...
parent::start_el(&$output, $item, $depth, $args);
$output = str_replace('<li', '<option', $output);
}
// replace closing </li> with the closing option tag
public function end_el(&$output, $item, $depth){
$output .= "</option>\n";
}
}
Dans vos modèles, utilisez-le comme ceci:
wp_nav_menu(array(
'theme_location' => 'primary', // your theme location here
'walker' => new Walker_Nav_Menu_Dropdown(),
'items_wrap' => '<select>%3$s</select>',
));
<UL>
s imbriqués :)J'ai trouvé cela utile:
Vous pouvez suivre toutes les réponses pour simplifier le menu dropdovn du code CSS.
parent
pour les éléments qui ont un sous-menudepth
classe (depth0, depth1, depth2 ...)ajouter à function.php votre thème
maintenant dans header.php
header-menu
remplacé par le nom de votre menuLe code d'exemple CSS peut être le
où
#menu-header-menu
- id la liste UL principale (vous devez également la mettre à jour)la source
Le plugin Dropdown Menus répond à la question:
wp_nav_menu
ne peut pas être utilisé pour créer un menu déroulant de sélection, tandis que le plugin fournit unedropdown_menu()
fonction astucieuse qui fait admirablement le travail.la source