我一直在尝试让函数 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,因此您绝对应该使用after
或link_after
之一。