Benutzerdefinierte festgelegte Klasse „aktuelles Menüelement“ für bestimmte Seiten in WP

Lesezeit: 2 Minuten

Ich erstelle ein benutzerdefiniertes WP-Design und verwende die WordPress-Navigationsleiste. Beim Wechseln zwischen verschiedenen Seiten fügt WP eine “aktuelles Menüelement”-Klasse hinzu, um in der Navigationsleiste zu verlinken, die der aktuellen Seite entspricht.

Wenn diese Seite/dieser Beitrag jedoch nicht in der Navigationsleiste vorhanden ist, wird das „Aktuelles-Menü-Element“ keinem der Elemente der Navigationsleiste hinzugefügt.

Mein Problem ist, wenn ein Benutzer die Seite “BLOG” (die eigentlich eine Kategorieseite ist) besucht und auf einen bestimmten Beitrag klickt, der die single.php-Vorlage öffnet, möchte ich, dass das Navigationsleistenelement “BLOG” so unterstrichen wird, wie es wäre wenn der Besucher eine Blog-Seite besucht hat.

Manchmal möchte ich, dass ein anderes Navigationsleistenelement unterstrichen wird, wenn ich auf SINGLE lande, je nachdem, woher der Benutzer kam (ich habe auch Homepage-Beiträge, dann möchte ich, dass HOME unterstrichen wird).

Wie mache ich das? Vielen Dank.

Sie können einen Filter verwenden und überprüfen, auf welcher Seite Sie sich gerade befinden, indem Sie bedingte Anweisungen verwenden und Klassen hinzufügen, bevor das Menü angezeigt wird:

function add_custom_classes($classes, $item){
    if(is_single() && $item->title == 'BLOG'){
         $classes[] = 'current-menu-item';
    }
    return $classes;
}

add_filter('nav_menu_css_class' , 'add_custom_classes' , 10 , 2);

  • Funktioniert sehr gut für alle einzelnen Posts, aber ich möchte, dass einige einzelne Posts unter “Home” und andere unter “Blog” sind, je nachdem, was die übergeordnete Kategorie dieses Posts ist.

    – Zanix

    9. Januar 2014 um 13:53 Uhr

  • Dann müssen Sie die verwenden get_the_category() Funktion mit der Variable $item->ID

    – Hunter WebDev

    9. Januar 2014 um 14:20 Uhr

  • Ich habe versucht, if(is_single() && get_the_category($item->ID) == 14) -> 14 ist die Kategorie-ID des Blogs, aber es scheint nicht zu funktionieren

    – Zanix

    9. Januar 2014 um 15:36 Uhr

  • Das ist, weil get_the_category() gibt keinen Wert zurück, sondern ein Array. WordPress hat Codex für seine Funktionen, es ist sehr nützlich: codex.wordpress.org/Function_Reference/get_the_category. Sie müssten $category = get_the_category($item->ID); Verwenden Sie dann $category->term_id == 14

    – Hunter WebDev

    9. Januar 2014 um 15:40 Uhr


  • OK, schrieb $category = get_the_category($item->ID); if(is_single() && $category->term_id == 14) aber immer noch keine Wirkung. Das Echo von $item->ID gibt mir insgesamt 13 Ziffern

    – Zanix

    9. Januar 2014 um 16:51 Uhr

1381600cookie-checkBenutzerdefinierte festgelegte Klasse „aktuelles Menüelement“ für bestimmte Seiten in WP

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy