web-dev-qa-db-fra.com

wp_nav_menu ne mettant pas en surbrillance la catégorie actuelle lors de la visualisation d'un seul message

Mon site WordPress contient de nombreux articles, tous classés par une catégorie de premier niveau et un ensemble de sous-catégories.

J'ai la navigation du site principal qui rend les pages de catégorie, qui, lorsqu'elles sont cliquées, obtiennent toutes les publications de cette catégorie de haut niveau sous forme d'archive.

La catégorie est mise en surbrillance comme vous le souhaiteriez lorsque vous visiterez l’une de ces pages. Toutefois, lorsqu’un seul post de cette catégorie sera visité, aucune mise en évidence pour moi. Je m'attendrais à ce que la catégorie de premier niveau à laquelle appartient ce message soit surlignée et il semble que ce soit le comportement souhaité.

Ma question est donc la suivante: que puis-je faire pour que la catégorie à laquelle la publication appartient doit être mise en surbrillance dans le navigateur principal lorsque je consulte une seule publication?

Le site reçoit beaucoup de trafic, je souhaite donc une solution évolutive.

1
gravy

Plusieurs classes CSS intégrées à sont fournies avec le wp_nav_menu .

Dans votre cas, vous recherchez quelque chose comme un catégorie actuelle class, qui estnot/ inclus. Mais nous pouvons facilement ajouter cela aux classes CSS:

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);

Remarque:: ce code n'a pas été testé!

Maintenant, vous pouvez cibler votre élément de menu comme suit:

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