web-dev-qa-db-fra.com

comment désactiver les classes de menu par défaut

je veux désactiver la classe de menu par défaut, le code ci-dessous est complètement la classe de menu.

add_theme_support( 'menus' );
add_filter('nav_menu_css_class', 'my_css_attributes_filter', 10, 1);
add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1);
add_filter('page_css_class', 'my_css_attributes_filter', 100, 1);
function my_css_attributes_filter($var) {
    return is_array($var) ? array_intersect($var, array('current-menu-item', 'current-menu-ancestor')) :
    '';
}

mais maintenant, c'est quand même j'ajoute une classe personnalisée dans le menu

 enter image description here 

exemplenavconcette classe ne vient pas. Je comprends un peu à cause de add_filter('nav_menu_css_class', 'my_css_attributes_filter', 10, 1); donc est-il possible de désactiver simplement toutes les classes de defualt mais si avoir classe personnalisée alors il va ajouter

mon code de piétinement est <?php wp_nav_menu( array('menu' => 'mainmenu','items_wrap'=>'%3$s', 'container' => false)); ?>

1
pagol

j'ai eu une réponse d'un autre fil .. qui est ci-dessous

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


function discard_menu_classes($classes, $item) {
    $classes = array_filter( 
        $classes, 
        create_function( '$class', 
                 'return in_array( $class, 
                      array( "current-menu-item", "current-menu-parent" ) );' )
        );
    return array_merge(
        $classes,
        (array)get_post_meta( $item->ID, '_menu_item_classes', true )
        );
    }

ref: http://wordpress.stackexchange.com/questions/30417/removing-all-classes-from-nav-menu-except-current-menu-item-and-current-menu-par

0
pagol