使用wordpress制作简单的菜单;带有li的无序列表,并且不存在使HTML看起来更整洁的属性。但是,活动li(取决于用户所在的页面)应具有class="active"
。
我尝试在add_filter
中更改functions.php
的优先级参数。
这是删除class属性的第一段代码。
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看起来像这样:
<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>
答案 0 :(得分: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'] : [];
}