Überprüfen Sie, ob wp_nav_menu Elemente Untermenüs haben

Ich möchte das folgende Markup für ein Menü ausgeben: wp_nav_menu,

 

Die Menüpunkte können Untermenüs haben – wenn dies der Fall ist, muss der Link der obersten Ebene wie im obigen Beispiel formatiert werden. Ich habe verschiedene Lösungsansätze ausprobiert, aber ohne Erfolg. Es scheint, dass ich einen Walker dafür erstellen muss, es sei denn, ich möchte eine Reihe von Abfragen hinzufügen (das Ausführen von Untermenu-Schleifen in einer Hauptschleife). Aber da es so eine kleine Änderung ist, wäre es nicht möglich, stattdessen einen Filter Hook auf den Menüausgang zu setzen?

Solutions Collecting From Web of "Überprüfen Sie, ob wp_nav_menu Elemente Untermenüs haben"

Wenn ich richtig verstehe, wollen Sie, dass Links mit Untermenüs ein Attribut von aria-haspopup . Wenn dies korrekt ist, sollten Sie dies mit dem Filter nav_menu_link_attributes (WP 3.6 und höher) tun können. Sie können auch die Notwendigkeit umgehen, einen benutzerdefinierten Walker schreiben zu müssen, um zu prüfen, ob ein Element untergeordnete Elemente aufweist, indem Sie seine CSS-classn im Filter überprüfen.

 add_filter( 'nav_menu_link_attributes', 'wpse154485_add_aria_haspopup_atts', 10, 3 ); function wpse154485_add_aria_haspopup_atts( $atts, $item, $args ) { if (in_array('menu-item-has-children', $item->classes)) { $atts['aria-haspopup'] = 'true'; } return $atts; }