Nie możesz tego zrobić za pomocą wp_nav_menu, ponieważ wyświetla on elementy listy, a kod wygeneruje nieprawidłowe znaczniki.
Spróbuj użyć wp_get_nav_menu_items ()Zamiast tego .
Szybkie rozwiązanie dla rozwijanego menu z niestandardowym walkerem:
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";
}
}
Użyj w swoich szablonach w następujący sposób:
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 :)Uważam to za przydatne:
Możesz śledzić dowolne odpowiedzi, aby uprościć menu dropdovn kodu css.
parent
dla elementów, które mają podmenudepth
klasę (głębokość 0, głębokość 1, głębokość 2 ...)dodaj do function.php swój motyw
teraz w header.php
header-menu
zastąpiony nazwą twojego menuPrzykładowym kodem CSS może być
gdzie
#menu-header-menu
- id główna lista UL (musisz ją również zaktualizować)źródło
Rozwijane menu plugin ma odpowiedzieć na pytanie:
wp_nav_menu
nie mogą być wykorzystywane do tworzenia rozwijanego menu wybierz, natomiast plugin zapewnia fajnądropdown_menu()
funkcję, która spełnia swoje zadanie znakomicie.źródło