So legen Sie die aktuell aktive Seite manuell mit wp_nav_menu () fest

9

Gibt es eine Möglichkeit, manuell anzugeben, welche Seite bei Verwendung derzeit "aktiv" ist wp_nav_menu()?

Ich habe eine Seite "Produkte" und auf dieser Seite habe ich Links zu verschiedenen (dynamischen) benutzerdefinierten Taxonomien. Wenn ich auf eine dieser Taxonomien klicke, bleibe ich auf der Seite "Produkte", wp_nav_menu()verliere jedoch den Hinweis darauf, dass ich mich immer noch auf der Seite "Produkte" befinde. Gibt es eine Möglichkeit, dies zu beheben?

Vielen Dank!

Jon

Jon
quelle

Antworten:

12

Wenn Sie die current_page_itemKlasse nur einem Menüelement hinzufügen möchten , können Sie eine Verbindung zum nav_menu_css_classFilter herstellen und diese Klasse bei Bedarf hinzufügen. Es wird aufgerufen, wenn das Menü gedruckt wird .

Wenn Sie auf das gesamte Menü zugreifen und Klassen hinzufügen möchten wp_get_nav_menu_items, schließen Sie den Filter an, in dem Sie das gesamte $itemsArray erhalten. Sie können die classesEigenschaften einzelner Elemente bearbeiten .

Jan Fabry
quelle
2

@Jon Solange Sie <body <?php body_class(); ?>>WordPress verwenden, wird die Klasse current_page_itemIhrem Menü zugewiesen , zusammen mit current_page_parentder Verwendung von Dropdown-Menüs.

Chris_O
quelle
1
Hallo Chris, Danke für die Antwort. Ich benutze die <body <? Php body_class (); ? >> Tag, aber das Problem ist, dass die Taxonomien, auf die ich klicke, in Bezug auf wp_nav_menu () nichts damit zu tun haben! Also muss ich zu wp_nav_menu () sagen - wenn die Seite X ist, dann zeige "Produkte" als current_page_parent.
Jon
0

Jan erwähnte den Filter nav_menu_css_class, also habe ich ihn nachgeschlagen und dieses Beispiel war für mich hilfreich. Quelle: https://codex.wordpress.org/Plugin_API/Filter_Reference/nav_menu_css_class

function my_special_nav_class( $classes, $item ) {
    if ( is_single() && $item->title == 'Blog' ) {
        $classes[] = 'special-class';
    }
    return $classes;
}    
add_filter( 'nav_menu_css_class', 'my_special_nav_class', 10, 2 );
Ross
quelle