如何为WordPress菜单的二级和三级<li>元素添加独立类
为二级、三级菜单添加独立类的实现方案
你可以通过扩展原有的菜单类添加函数,利用菜单项的menu_item_parent属性判断层级,分别为二级、三级菜单添加专属类。以下是修改后的完整代码:
// 为不同层级的菜单<li>添加专属类 function add_menu_level_classes($items) { // 收集所有父级菜单的ID $parents = array(); foreach ($items as $item) { if ($item->menu_item_parent > 0) { $parents[] = $item->menu_item_parent; } } foreach ($items as $item) { // 保留原逻辑:标记顶级父菜单 if (in_array($item->ID, $parents)) { $item->classes[] = 'menu-item__parent'; } // 找到当前菜单的父级项 $parent_item = wp_filter_object_list($items, array('ID' => $item->menu_item_parent)); if (!empty($parent_item)) { $parent_item = reset($parent_item); // 父级是顶级菜单(无上级),当前为二级菜单 if ($parent_item->menu_item_parent == 0) { $item->classes[] = 'menu-item__level-2'; } // 父级是二级菜单,当前为三级菜单 elseif (in_array('menu-item__level-2', $parent_item->classes)) { $item->classes[] = 'menu-item__level-3'; } } } return $items; } add_filter('wp_nav_menu_objects', 'add_menu_level_classes');
代码说明:
- 保留了原有的顶级父菜单标记逻辑,确保原有功能不受影响。
- 通过
wp_filter_object_list从菜单列表中匹配当前项的父级菜单,通过父级的层级状态判断当前项层级:- 父级菜单无上级(
menu_item_parent为0)时,当前项为二级菜单,添加类menu-item__level-2。 - 父级菜单已标记为二级时,当前项为三级菜单,添加类
menu-item__level-3。
- 父级菜单无上级(
- 类名可根据项目需求自定义,比如改为
sub-menu-2这类更贴合你代码规范的名称。
内容的提问来源于stack exchange,提问作者yanksi_
相关产品推荐
相关产品推荐

