Wie alle Ahnen-Menüelemente einer untergeordneten Seite, die NICHT im Menü angezeigt wird, hervorgehoben werden

Hier ist die Situation: In meiner Hauptnavigation habe ich etwas, das so aussieht:

  • Arbeite mit mir
    • Neueste Projekte

Die Seite “Letzte Projekte” ist eine untergeordnete Seite und ein Untermenüpunkt der Seite “Mit mir arbeiten”. Beide werden in der Hauptnavigation angezeigt.

Ich habe jedoch mehrere Projektseiten, die nur untergeordnete Seiten von Latest Projects sind. Ich entschied mich, sie nicht im Menü als Untermenüpunkte anzuzeigen, da die Liste zu lang wäre.

Was ich also gerne hätte, wenn sich ein Betrachter auf einer der Projektseiten befindet, sind sowohl die Menüpunkte Letzte Projekte als auch Arbeiten mit mir aktiv (hervorgehoben).

Ich habe diesen Code gefunden, der zu meiner functions.php-Datei hinzugefügt wurde. Es funktioniert, aber es hebt nur den Menüpunkt “Letzte Projekte” hervor (nicht das Element “Mit mir arbeiten”).

object_id) { array_push($classes, 'current-menu-ancestor'); } return $classes; } 

Wie kann ich diesen Code so ändern, dass er alle übergeordneten Menüelemente enthält? TIA!

Solutions Collecting From Web of "Wie alle Ahnen-Menüelemente einer untergeordneten Seite, die NICHT im Menü angezeigt wird, hervorgehoben werden"

Sie überprüfen nur einen übergeordneten Artikel.

Stattdessen können Sie gegen alle Eltern überprüfen

 < ?php //in functions.php add_filter('nav_menu_css_class', 'highlight_portfolio', 12, 2); function highlight_portfolio($classes, $item) { $parents = get_post_ancestors(); if ( 0 < count($parents) ) { if ( in_array( $item->object_id, $parents ) { array_push( $classes, 'current-menu-ancestor' ); } } return $classes; } 

Beachten Sie in Ihrem Code

 $parent_ID = $parent[0]; 

Das greift nur die erste übergeordnete ID in der zurückgegebenen Liste. Verwenden von in_array überprüft, ob es mit einem der Vorfahren übereinstimmt.