You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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_

    相关产品推荐
    方舟 Agent Plan

    超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

    最近更新时间:2026.08.06 02:35:16