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

如何在wp_nav_menu的含子菜单菜单项中添加<i>标签

解决方案:给WordPress带子菜单的菜单项添加下拉箭头标签

要实现给包含子菜单的菜单项添加指定的<i>下拉箭头标签,结合你已经实现的aria-haspopup属性代码,这里有两种实用方案供你选择:

方案1:用nav_menu_item_title过滤器快速追加箭头

这个方法简洁直接,适合不需要复杂结构调整的场景:

// 保留你已有的添加aria属性的代码
add_filter( 'nav_menu_link_attributes', 'wpse154485_add_aria_haspopup_atts', 10, 3 );
function wpse154485_add_aria_haspopup_atts( $atts, $item, $args ) {
    if (in_array('menu-item-has-children', $item->classes)) {
        $atts['aria-haspopup'] = 'true';
    }
    return $atts;
}

// 新增:给带自菜单的菜单项添加下拉箭头
add_filter( 'nav_menu_item_title', 'add_submenu_arrow_to_menu_item', 10, 4 );
function add_submenu_arrow_to_menu_item( $title, $item, $args, $depth ) {
    // 仅给顶级带自菜单的菜单项加箭头(如果需要给所有层级子菜单也加,去掉$depth === 0的判断)
    if (in_array('menu-item-has-children', $item->classes) && $depth === 0) {
        $title .= '<i class="hover-ind fa fa-angle-down" aria-hidden="true"></i>';
    }
    return $title;
}

方案2:自定义Walker_Nav_Menu类(更灵活的结构控制)

如果需要对菜单HTML结构做更多自定义,自定义Walker类能完全掌控输出逻辑:

// 自定义菜单Walker类
class Custom_Nav_Walker extends Walker_Nav_Menu {
    // 处理菜单项的链接输出
    function start_el( &$output, $item, $depth = 0, $args = null, $id = 0 ) {
        $classes = empty( $item->classes ) ? array() : (array) $item->classes;
        $has_children = in_array('menu-item-has-children', $classes);

        // 先调用父类方法生成基础链接结构
        parent::start_el( $output, $item, $depth, $args, $id );
        
        // 给带自菜单的菜单项插入箭头标签
        if ($has_children) {
            $output = str_replace('</a>', '<i class="hover-ind fa fa-angle-down" aria-hidden="true"></i></a>', $output);
        }
    }
}

// 调用菜单时指定使用自定义Walker(示例)
// wp_nav_menu( array(
//     'theme_location' => 'primary',
//     'walker' => new Custom_Nav_Walker()
// ) );

使用这个方案时,记得在主题中调用wp_nav_menu的地方,加上walker参数指定自定义类实例。

两种方案都能实现你要的效果,简单需求选方案1,需要更多结构调整选方案2就好。

内容的提问来源于stack exchange,提问作者Rango

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:49:09