Skip to main content

在定制主题的时候,想去除一些 wp_nav_menu 函数输出的html代码,下面是一些解决方法。

去掉li多余的css

去除菜单没有设置时候的默认值

fallback_cb 参数设置为 false 即可。

去除div

去除 div 标签最简单,只需要配置一个参数container为false即可。

去除ul

去除外层的 ul 标签,需要借助 items_wrap 参数,通过查看源代码:wp-includes/nav-menu-template.php,发现 items_wrap 的默认值是:

注意:如果菜单是多级的,子菜单仍然有ul,如果这个也想去掉可以参考下面的去li的方法

去除li

这里需要用php的函数strip_tags(),trip_tags() 函数可以剥去字符串中的 HTML、XML 以及 PHP 的标签

这里我们先设置echo为false,然后获取到菜单的内容,例如:

然后通过strip_tags函数过滤掉一些标签

第二个参数是保留的标签,可以写多个标签例如:

 

通过 Walker_Nav_Menu 控制

这次在定制主题的时候,最终想要的是这样的:

a 标签里有默认的样式,而且target默认为 blank。

div和ul是通过上面的方式处理的,li和a的处理是通过扩展Walker_Nav_Menu实现的,具体代码如下:

输出