在使用wordpress自带的函数wp_nav_menu()生成菜单时,往往会自动生成很多不必要的div容器或ul,li标签.想要把他们去掉或修改div和ul标签是比较容易的,我在网上搜到很多的教程.小编就不在这里说了.然而,小编想要保留li标签但不带id和css选择器的名称时,却是没有找到方法和教程.小编经过了一下午的时间折腾,终于在fifteen主题中找到了一个方法,可以去掉多余的类名和ID选择器名.方法如下:
<ul> <?php if(function_exists('wp_nav_menu')) ?> <?php wp_nav_menu( array( 'depth' => 1 , 'theme_location' => 'three', // 'echo' => false,// 'container' => 'false', //移除父级容器div 'items_wrap' => '%3$s<li class="%2$s"></li>' //去除ul标签 ) ); ?> </ul>
在模板需要的位置调用菜单的方法()
function my_css_attributes_filter($var) { //return is_array($var) ? array() : ''; // return is_array($var) ? array_intersect($var, array('aboutus')) : ''; } add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1);//清除不必要的CSS类选择器 add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1);//清除不必要的ID选择器
在主题functions中需要添加的方法.
小编目前还不是很了解这个方法的意思.但是经过了半天的时间折腾,还是想要纪录下来,希望对你我都有帮助.
后来,小编在网上到了一篇文章,去除多余代码的方法如下:
清理菜单多余css代码
add_filter(‘nav_menu_css_class’, ‘my_css_attributes_filter’, 100, 1);
add_filter(‘nav_menu_item_id’, ‘my_css_attributes_filter’, 100, 1);
add_filter(‘page_css_class’, ‘my_css_attributes_filter’, 100, 1);
function my_css_attributes_filter($var) {
return is_array($var) ? array() : ”;
}
代码使用说明
直接复制代码粘贴到主题的functions.php文件中即可,如果要保留部分选择器可以用下面的代码替换上面代码中4、5、6这3行即可代码如下:
function my_css_attributes_filter($var) {
return is_array($var) ? array_intersect($var, array(‘menu-item’)) : ”;
}
通过上面的代码就把我使用的menu-item这个选择器保留了下来,前台生成的html代码就是 class=”menu-item”,一般来说,在WordPress 导航菜单中我们经常使用的选择器有(menu-item、 current-menu-item、 current-post-parent、 current-menu-parent)这几个那么我们可以把这几个标签都保留下来,上面我们只给出了保留单个标签的代码,如果要保留多个css选择器就要使用下面这段代码同样的操作方法替换上面代码的4、5、6这3行代码如下:
function my_css_attributes_filter($var) {
return is_array($var) ? array_intersect($var, array(‘menu-item’,’current-menu-item’,’current-post-parent’,’current-menu-parent’)) : ”;
}
该方法转自”晨星博客”.