Update: Ab WordPress 3.7 (Oktober 2013) wurden CSS-Klassen hinzugefügt, um untergeordnete Menüelemente und Seiten in Themenmenüs anzuzeigen. Es ist nicht mehr erforderlich, einen benutzerdefinierten Walker zu verwenden, da dieser in WordPress Core behandelt wird.
Die CSS-Klassen heißen menu-item-has-children
und page_item_has_children
.
Eine vollständige Lösung für alle, die es eilig haben (dank der vorherigen Antwort von Jan Fabry), finden Sie in der folgenden vollständigen Implementierung.
Gib die Navigation in der Vorlage deines Themas aus:
wp_nav_menu( array(
'theme_location' => 'navigation-primary',
'container' => false,
'container_class' => '',
'container_id' => '',
'menu_class' => '',
'menu_id' => '',
'walker' => new Selective_Walker(),
'depth' => 2
)
);
Nehmen Sie dann Folgendes in Ihr Thema auf functions.php
:
class Selective_Walker extends Walker_Nav_Menu {
function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
$id_field = $this->db_fields['id'];
if ( is_object( $args[0] ) ) {
$args[0]->has_children = !empty( $children_elements[$element->$id_field] );
}
return parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
}
function start_el( &$output, $item, $depth, $args ) {
if ( $args->has_children ) {
$item->classes[] = 'has_children';
}
parent::start_el(&$output, $item, $depth, $args);
}
}
Die resultierende HTML-Ausgabe sieht folgendermaßen aus:
<ul>
<li><a href="#">Home</a></li>
<li class="has_children"><a href="#">About</a>
<ul class="sub-menu">
<li><a href="#">Our Mission</a></li>
</ul>
</li>
<li><a href="#">Services</a></li>
<li class="has_children"><a href="#">Products</a>
<ul class="sub-menu">
<li><a href="#">Lorem Ipsum</a></li>
<li><a href="#">Lorem Ipsum</a></li>
</ul>
</li>
<li><a href="#">Contact Us</a></li>
</ul>
Weitere Informationen zur Verwendung der Walker-Klasse von WordPress finden Sie unter Grundlegendes zur Walker-Klasse .
Genießen!