Voulez-vous ajouter une classe ancêtre aux articles individuels ? Lorsque vous ouvrez une page d'article individuel (c'est-à-dire single.php), vous n'obtenez aucune classe current_page_item ou current-page-ancestor sur votre wp_nav_menu. Vous ne pouvez pas non plus indiquer à vos utilisateurs dans quelle section ils se trouvent actuellement.
Instructions :
Il vous suffit d'ajouter ce code au fichier functions.php de votre thème ou dans un plugin spécifique au site :
<?php
function add_single_post_ancestor_nav_class($classes, $item){
global $post;
$is_ancestor = false;
if ( is_single() ) {
if ( $post->post_type != 'post' ) {
// Checks if the custom-post-type label name matches the title of the nav-page-item
$post_type_obj = get_post_type_object($post->post_type);
$post_type_labels = $post_type_obj->labels;
$post_type_name = $post_type_labels->name;
if( $item->title == $post_type_name ) { $is_ancestor = true; }
}
else {
// Checks if one of the single-post categories matches the title of the nav-page-item
$categories = get_categories();
foreach ( $categories as $category ) {
if ( in_category($category->name) && $item->title == $category->name ) { $is_ancestor = true; }
}
}
if( $is_ancestor ){ $classes[] = 'current-page-ancestor'; }
}
return $classes;
}
add_filter('nav_menu_css_class' , 'add_single_post_ancestor_nav_class' , 10 , 2);
?>
Si le nom générique dans les étiquettes ne correspond pas au titre de la page, la classe ne sera pas ajoutée.
Remarque : Si c'est la première fois que vous ajoutez des extraits de code dans WordPress, veuillez consulter notre guide sur la manière de copier / coller correctement des extraits de code dans WordPress, afin de ne pas casser accidentellement votre site.
Si vous avez aimé cet extrait de code, pensez à consulter nos autres articles sur le site tels que : 7 meilleurs services VPN pour les utilisateurs de WordPress et 12 meilleurs plugins WordPress pour podcasts.
Pouvez-vous mettre le code sur cette page ? Je ne le vois pas...
Mis à jour !