如何修改WordPress导航菜单CSS类过滤函数,保留nav-active与has-child类
解决方案
你只需要调整过滤函数,在保留has-child类的基础上处理当前菜单项的nav-active类即可,修改后的代码如下:
add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2); function special_nav_class($classes, $item){ // 初始化要返回的类数组 $new_classes = []; // 给当前菜单项添加自定义激活类 if(in_array('current-menu-item', $classes)){ $new_classes[] = 'nav-active'; } // 保留原有的has-child类 if(in_array('has-child', $classes)){ $new_classes[] = 'has-child'; } return $new_classes; }
代码说明
- 先创建空数组
$new_classes用来存放最终输出的CSS类 - 判断当前菜单项是否包含
current-menu-item类,存在则添加自定义的nav-active - 检查原类列表里的
has-child类,存在则保留到新数组中 - 最后返回组合后的数组,实现既保留
has-child,又仅给当前项添加nav-active的需求
内容的提问来源于stack exchange,提问作者BN83
相关产品推荐
相关产品推荐

