过滤掉内置的wp_NAV_MENU类,但保留自定义类

时间:2011-06-28 作者:Mark Theron

我试图从wp\\u nav\\u菜单中删除/过滤我们的所有类,除了我在管理中创建菜单时插入的自定义类(在“CSS类(可选)”字段中)。

我找到了一个可以删除所有内容的函数,但这并不好

有人有什么想法吗?

谢谢

2 个回复
SO网友:Rarst

代码中较暗的一个角。:)以下是我的观点:

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

function discard_menu_classes($classes, $item) {

    return (array)get_post_meta( $item->ID, \'_menu_item_classes\', true );
}

SO网友:fad.lee

我正试着回答。

负责为菜单项生成类的函数是_wp_menu_item_classes_by_context 在文件中wp-includes/nav-menu-template.php. 你可以在那里挖掘,看看它生成了什么类,这样你就可以在nav_menu_css_class 滤器

我发现自动生成的每个类都是从menu-item 班因此,在过滤器中,我循环类数组,直到找到那个类。

这是我的代码:

function my_nav_menu_css_class($classes) {
    $custom_classes = array();
    foreach($classes as $class) {
        if($class==\'menu-item\') return $custom_classes;
        $custom_classes[] = $class;
    }
}
add_filter(\'nav_menu_css_class\', \'my_nav_menu_css_class\');

结束

相关推荐

Menu API not switching menus?

我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph