Cette solution fait presque ce que je veux.
La seule chose est que mon menu est configuré comme suit:
Menu item 1
Menu item 2
Custom post type 1
Custom post type 2
Custom post type 3
Menu item 3
En utilisant la solution mentionnée, la balise "current_url" est ajoutée au sous-menu du type de message personnalisé dans lequel je me trouve ("Type de message personnalisé 1"). Mais je veux qu'il ajoute un "current_menu_item" (ou quelque chose) à "l'élément de menu 2".
Un moyen de faire ça?
Je fais ce qui suit, cela peut être long si vous avez plusieurs types de post, n'hésitez pas à le modifier cependant:
/** Edit Nav Menu calsses **/
function custom_wp_nav_classes($classes, $item){
global $post;
$page_blog = get_option('page_for_posts');
if(is_tax('my_taxonomy_name_here') || is_singular('my_post_type_name_here')){
/** Remove Active Class from Blog **/
if($item->object_id == $page_blog)
$classes = array_filter($classes, "remove_parent");
/** Page ID of what you want to be active **/
if($item->object_id == 12)
$classes[] = 'current_page_parent';
}
return $classes;
}
add_filter('nav_menu_css_class' , 'custom_wp_nav_classes' , 10 , 2);
// Remove Active Class from Blog when viewing CPTs
function remove_parent($var){
if ($var == 'current_page_parent' || $var == 'current-menu-item' || $var == 'current-page-ancestor') { return false; }
return true;
}
WordPress gère cela en ajoutant la classe current_page_ancestor
et/ou current_page_parent
à l'élément parent. Essayez de styler ces classes de manière similaire à current_menu_item
.