我一直试图让函数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>
我尝试使用'after'和'link_after'之类的参数。但第一个输出</li>
标记之前的元素和</a>
标记之前的下一个元素。有没有办法在<span>
标签后输出</li>
元素?
我读到了Walker类,但我不太了解它的逻辑 - 我不擅长PHP。
答案 0 :(得分:0)
我没有安装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
作为$walker
函数的wp_nav_menu()
参数传递。
实际上,这个答案是不完整的,无法摆脱你不需要的最后<span>
元素。我稍后会尝试改进它。同样@ rnevius在他的评论中提到它将是无效的HTML,所以你应该肯定使用after
或link_after
中的一个。