webentwicklung-frage-antwort-db.com.de

wp_nav_menu hebt die aktuelle Kategorie nicht hervor, wenn ein einzelner Beitrag angezeigt wird

Meine WordPress-Site enthält eine Reihe von Beiträgen, die alle nach einer Kategorie der obersten Ebene und einer Reihe von Unterkategorien geordnet sind.

Ich habe die Hauptwebsite nav, die die Kategorieseiten rendert, die, wenn sie angeklickt werden, alle Beiträge in dieser Kategorie der obersten Ebene als "Archiv" abrufen.

Die Kategorie wird wie erwartet hervorgehoben, wenn Sie eine dieser Kategorieseiten besuchen. Wenn Sie jedoch einen einzelnen Beitrag in dieser Kategorie besuchen, ist dies für mich keine Hervorhebung. Ich würde erwarten, dass die Kategorie der obersten Ebene, zu der dieser Beitrag gehört, hervorgehoben wird und es so aussieht, als ob dies das beabsichtigte Verhalten ist.

Meine Frage lautet also: Was kann ich tun, um die Kategorie, zu der der Beitrag gehört, in der Hauptnavigation hervorzuheben, wenn ich einen einzelnen Beitrag ansehe?

Die Site ist ziemlich stark frequentiert, daher bin ich sehr daran interessiert, eine Lösung zu finden, die sich gut skalieren lässt.

1
gravy

Es gibt mehrere integrierte CSS-Klassen, die mit dem wp_nav_menu geliefert werden.

In Ihrem Fall suchen Sie nach etwas wie einer aktuellen Kategorie Klasse, dienichtenthalten ist. Aber wir können das leicht zu den CSS-Klassen hinzufügen:

function wpse_134409_current_category_class($classes, $item) {
    if (
        is_single()
        && 'category' === $item->object
        && in_array($item->object_id, wp_get_post_categories($GLOBALS['post']->ID))
    )
        $classes[] = 'current-category';

    return $classes;
} // function wpse_134409_current_category_class

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

Bitte beachten Sie: dieser Code ist ungetestet!

Jetzt können Sie Ihren Menüpunkt wie folgt ausrichten:

#menu-id li.current-category {
    /* styles */
}
3
tfrommen