如何为WordPress菜单项添加自定义类?现有代码失效求助
我帮你梳理下代码里的几个问题,调整后就能让自定义类正常生效了:
1. 修复菜单注册与调用的主题位置不匹配
你在functions.php里注册菜单时用的主题位置是'Primary',但header.php里调用wp_nav_menu时指定的'theme_location' => 'header-menu',两者不匹配,WordPress找不到对应的菜单,自然不会应用你的自定义类。
修改header.php里的wp_nav_menu参数,把theme_location改成和注册时一致的'Primary',同时建议把container设为false(避免默认容器和你想要的结构冲突):
<div class="main-nav"> <?php wp_nav_menu( array( 'theme_location' => 'Primary', 'container' => false, 'menu_class' => 'nav' ) ); ?> </div>
2. 修正过滤器函数的参数数量
你添加的nav_menu_css_class过滤器,函数add_class_to_li只接受2个参数,但你在add_filter里写了10, 4(优先级10,接受4个参数),这会导致函数无法正确接收参数,从而失效。
修改functions.php里的过滤器代码,把参数数量改成和函数匹配的2个:
/*Custom menu class*/ function add_class_to_li($classes, $item){ $classes[] = "nav-item"; return $classes; } add_filter('nav_menu_css_class','add_class_to_li', 10, 2); // 最后一个参数改为2
3. 可选:确认菜单已分配到对应位置
登录WordPress后台,进入外观 > 菜单,检查你创建的菜单是否已经分配到了Header Menu(也就是你注册的Primary位置),如果没分配的话,菜单也无法正常渲染和应用自定义类。
做完这几步,刷新前端页面,就能看到每个菜单项的<li>标签上都加上nav-item类了。
内容的提问来源于stack exchange,提问作者O. Uni
相关产品推荐
相关产品推荐

