web-dev-qa-db-de.com

so deaktivieren Sie Standard-Menüklassen

ich möchte die Standard-Menüklasse deaktivieren. Der folgende Code ist die vollständige Deaktivierung der Menüklasse.

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')) :
    '';
}

aber jetzt ist das Problem, wenn ich sogar eine benutzerdefinierte Klasse im Menü hinzufüge

 enter image description here 

beispielnavcondiese Klasse kommt nicht. Ich verstehe es ein bisschen wegen add_filter('nav_menu_css_class', 'my_css_attributes_filter', 10, 1); so gibt es eine Möglichkeit, einfach alle defualt Klasse zu deaktivieren, aber wenn benutzerdefinierte Klasse haben, dann wird es hinzufügen

mein trampelcode ist <?php wp_nav_menu( array('menu' => 'mainmenu','items_wrap'=>'%3$s', 'container' => false)); ?>

1
pagol

ich habe eine Antwort von einem anderen Thread ... der unten ist

    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