Je veux remplacer la classe ci-dessous par la classe active
dans le menu:
.current-menu-item
et
.current_page_item
J'utilise déjà un rappel de menu qui ajoute une classe dropdown
dans le menu enfant:
class foundation_navigation extends Walker_Nav_Menu {
function start_lvl(&$output, $depth) {
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<a href=\"#\" class=\"dropdown-toggle\"><span> </span></a><ul class=\"dropdown\">\n";
}
function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
$id_field = $this->db_fields['id'];
if ( !empty( $children_elements[ $element->$id_field ] ) ) {
$element->classes[] = 'has-dropdown';
}
Walker_Nav_Menu::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
}
}
Ajoutez cette ligne en haut de votre fonction d'élément d'affichage:
add_filter('nav_menu_css_class', 'add_active_class_to_nav_menu');
Ajoutez cette ligne en bas de votre fonction d'élément d'affichage:
remove_filter('nav_menu_css_class', 'add_active_class_to_nav_menu');
Ajoutez cette fonction quelque part dans vos thèmes functions.php
:
function add_active_class_to_nav_menu($classes) {
if (in_array('current-menu-item', $classes, true) || in_array('current_page_item', $classes, true)) {
$classes = array_diff($classes, array('current-menu-item', 'current_page_item', 'active'));
$classes[] = 'active';
}
return $classes;
}
Recherchez current_page_item. Je l'ai trouvé quatre fois au total dans post-template.php et nav-menu-template.php. Puis remplacez-le par actif .