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

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 .


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.


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 );
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.