如何通过删除所有属性清理菜单里,但保留'类=“活动”`当前菜单项?

问题描述 投票:0回答:1

使用WordPress,使一个简单的菜单;无序列表里,和现在使HTML看起来更干净没有属性。然而,有源李(取决于用户在页面上)应该有一个class="active"

我试着改变add_filterfunctions.php的优先级参数。

下面是消除类属性的一个代码块。

add_filter('nav_menu_css_class', 'my_css_attributes_filter', 10, 1);
function my_css_attributes_filter($var) {
    return is_array($var) ? array() : '';
}

这里的第二块,其具有相同的钩,nav_menu_css_class,和相同的优先级参数,10,作为第一个块。

add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
function special_nav_class($classes, $item){
    if( in_array('current-menu-item', $classes) ){
                    $classes[] = 'active ';
    }
    return $classes;
}

我想知道如何让我的李看起来像这样的活动页面上时:

  <li class="active"></li>

如果我删除add_filter('nav_menu_css_class', 'my_css_attributes_filter', 10, 1);,该active类是存在的,但与其他所有的烂摊子:

<li class="menu-item menu-item-type-post_type_archive menu-item-object-news current-menu-item menu-item-42 active"> </li>
php wordpress
1个回答
0
投票

谢谢04FS,这里是什么工作:

这消除了id属性。的add_filter( 'nav_menu_item_id', 'my_css_attributes_filter',10,1);的add_filter( 'page_css_class', 'my_css_attributes_filter',10,1);

function my_css_attributes_filter($var) {
    return is_array($var) ? array() : '';
}

这消除了对除class active属性中的所有值:

add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
function special_nav_class($classes, $item){
    return in_array('current-menu-item', $classes) ? ['active'] : [];
}
© www.soinside.com 2019 - 2024. All rights reserved.