wp_nav_menu中的自定义菜单标签


Custom menu tags in wp_nav_menu

我一直在尝试让函数 wp_nav_menu() 输出以下 html 结构:

<ul>
 <li><a href="#">LINK</a></li><span>element</span>
 <li><a href="#">LINK</a></li><span>element</span>
 <li><a href="#">LINK</a></li><!--no element HERE!-->
</ul>

我尝试使用"之后"和"link_after"等参数。但是第一个在标签之前输出元素</li>下一个在标签之前输出</a>下一个。有没有办法在</li>标签后输出<span>元素?我读过关于Walker类的文章,但我不太明白它的逻辑 - 我不太擅长PHP。

我没有安装wp来测试它,但仍然把它留在这里。您需要扩展 Walker_Nav_Menu 类,如下所示:

class custom_walker_nav_menu extends Walker_Nav_Menu 
{
    public function end_el( &$output, $item, $depth = 0, $args = array())
    {
        $output .= "</li><span>element</span>'n";
    }
}

然后将new custom_walker_nav_menu作为wp_nav_menu()函数的参数传递$walker。实际上,这个答案是不完整的,无法摆脱您不需要的最后<span>元素。我稍后会尝试改进它。此外,正如@ rnevius在他的评论中提到的,这将是一个无效的HTML,因此您绝对应该使用afterlink_after之一。