在使用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’)) : ”;
}

 

该方法转自”晨星博客”.