Fügen Sie dem aktiven Element und seinem übergeordneten Element im Navigationsmenü eine class hinzu

Ich benutze den folgenden Code, um dem aktuellen Menüpunkt einen classnnamen “aktiv” hinzuzufügen:

add_filter('nav_menu_css_class', 'add_active_class', 10, 2 ); function add_active_class($classes, $item) { if( $item->menu_item_parent == 0 && in_array('current-menu-item', $classes) ) { $classes[] = "active"; } return $classes; } 

Dies funktioniert als Charme, aber nur für Artikel ohne Dropdown-Menü. Wenn ein Element mit untergeordneten Elementen vorhanden ist, wird die aktive class nicht zum übergeordneten Element hinzugefügt.

Gibt es eine Möglichkeit, diesen Code zu ändern, so dass der Filter eine “aktive” class sowohl der aktuellen als auch der übergeordneten Verbindung hinzufügt?

Solutions Collecting From Web of "Fügen Sie dem aktiven Element und seinem übergeordneten Element im Navigationsmenü eine class hinzu"

Abhängig vom Kontext, den Sie benötigen, und von dem Code, den Sie haben, können Sie Folgendes versuchen:

 add_filter('nav_menu_css_class', 'add_active_class', 10, 2 ); function add_active_class($classes, $item) { $class_names = array( 'current-menu-item', 'current-menu-ancestor', 'current-menu-parent', 'current_page_parent', 'current_page_ancestor' ); if( $item->menu_item_parent == 0 && in_array( $class_names, $classes) ) { $classes[] = "active"; } return $classes; } 

UPDATE: Wenn oben wegen des Arrays als Nadel für die in_array-function aufgrund der PHP-Version nicht funktioniert, versuche es unter folgendem Code:

 add_filter('nav_menu_css_class', 'add_active_class', 10, 2 ); function add_active_class($classes, $item) { if( $item->menu_item_parent == 0 && in_array( 'current-menu-item', $classes ) || in_array( 'current-menu-ancestor', $classes ) || in_array( 'current-menu-parent', $classes ) || in_array( 'current_page_parent', $classes ) || in_array( 'current_page_ancestor', $classes ) ) { $classes[] = "active"; } return $classes; } 

Wenn Sie möchten, dass ein aktuelles Element die class aktiviert hat, können Sie Folgendes tun:

 add_filter('nav_menu_css_class', 'add_active_class', 10, 2 ); function add_active_class($classes, $item) { if( in_array( 'current-menu-item', $classes ) || in_array( 'current-menu-ancestor', $classes ) || in_array( 'current-menu-parent', $classes ) || in_array( 'current_page_parent', $classes ) || in_array( 'current_page_ancestor', $classes ) ) { $classes[] = "active"; } return $classes; }