wp_nav_menu中的自定义菜单标签

时间:2015-01-26 12:42:21

标签: php wordpress

我一直试图让函数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。

1 个答案:

答案 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,所以你应该肯定使用afterlink_after中的一个。