Wordpress的自带函数可以轻松自定义菜单的容器id与类名,但想要自定义菜单栏内每条li标签class名的时候,就不是那么容易了,好在Wordpress也提供强大的过滤器:
清空或指定一个类名
add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 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() : '';
}
将上面的代码添加到主题的functions.php,可以去掉li的所有选择器,如果想要保留或者自定义一个li标签的类的时候,可以将return语句修改如下:
return is_array($var) ? array('自定义的类名') : '';
在实际应用中,我们需要判断当前菜单项是否被选中——“current”,还需要判断是否是父菜单——“parent”,所以也可以仅过滤掉不准备保留的类名:
add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 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('menu-item-parent','current-menu-item','current-menu-parent','menu-item')) : '';
}
将以上代码加入至主题的functions.php的尾部,刷新页面后,导航栏的类名会展示如下: