start_el()
sollte diese Informationen in seinem $args
Parameter erhalten, aber es scheint, dass WordPress dies nur ausfüllt, wenn $args
es sich um ein Array handelt , während es sich bei den benutzerdefinierten Navigationsmenüs um ein Objekt handelt. Dies wird in einem Trac-Ticket gemeldet . Aber kein Problem, Sie können dies selbst ausfüllen, wenn Sie auch die display_element()
Methode in Ihrem benutzerdefinierten Walker überschreiben (da dies der einfachste Ort ist, um auf das untergeordnete Elementarray zuzugreifen):
class WPSE16818_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 ) {
// ...
}
}
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
undpage_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:
Nehmen Sie dann Folgendes in Ihr Thema auf
functions.php
:Die resultierende HTML-Ausgabe sieht folgendermaßen aus:
Weitere Informationen zur Verwendung der Walker-Klasse von WordPress finden Sie unter Grundlegendes zur Walker-Klasse .
Genießen!
quelle
Diese Funktion ist genau das, was Sie haben möchten. Es zeigt Ihnen auch eine ziemlich effektive Möglichkeit, Navigationsmenüelemente zu ändern. Darüber hinaus können Sie es über den Item-Filter für erweiterte (zB untergeordnete) Funktionen öffnen:
Und ja, in fast allen Fällen ist kein maßgefertigter Gehwagen erforderlich.
quelle
Wenn Sie Dropdown erstellen möchten, können Sie dies nur mit CSS tun. Benutzerdefinierte Navigation in WP mit untergeordneten Elementen erstellen, WordPress weist der untergeordneten ul automatisch das Untermenü der Klasse zu. Versuchen Sie dieses CSS
Vielleicht möchten Sie etwas jQuery hinzufügen, um es ein wenig aufzupeppen, aber dies sollte Ihnen ein funktionierendes Dropdown-Menü geben.
quelle
quelle