WP_NAV_MENU从li中删除类和id

时间:2011-03-23 作者:eddyward

我是wordpress的新手,试图通过制作主题来学习。现在我正在使用wp\\u nav\\u menu生成我的菜单我的菜单由页面和类别组成

但是,默认生成的菜单如下所示

<div id="navi">
<div class="menu-primary-container">  
  <ul id="menu-primary" class="menu">
    <li id="menu-item-14" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14"></li>
    <li id="menu-item-16" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-16"></li>
    <li id="menu-item-20" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20"></li>
    <li id="menu-item-15" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-15"></li>
    <li id="menu-item-17" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17"></li>
  </ul>
</div>
</div>
我想删除li和ul中的所有类和id。我已经在谷歌上搜索了一段时间了。尝试了不同的方法,但没有成功。任何帮助都将不胜感激。我目前正在使用Wordpress 3.1

提前感谢您!

4 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

如果你进去看看the wp_nav_menu() function, 您可以看到项目是由walk_nav_menu_tree(), 哪个呼叫Walker_Nav_Menu 完成这项工作(除非您指定了自己的walker课程)。此类包含一个方法start_el() 为每个菜单项调用。在这个函数中,您可以看到这些类是通过nav_menu_css_class id被过滤nav_menu_item_id. 因此,如果您将自己的代码附加到这些挂钩上,您可以将它们更改为您想要的任何内容。

子菜单are always wrapped with <ul class="sub-menu">, 主包装器can be changed via the menu_id and menu_class arguments.

SO网友:Marcus Downing

您可以使用nav_menu_item_idnav_menu_css_class 过滤挂钩如下:

add_filter(\'nav_menu_item_id\', \'clear_nav_menu_item_id\', 10, 3);
function clear_nav_menu_item_id($id, $item, $args) {
    return "";
}

add_filter(\'nav_menu_css_class\', \'clear_nav_menu_item_class\', 10, 3);
function clear_nav_menu_item_class($classes, $item, $args) {
    return array();
}
这将导致项目显示<li id="" class="">. 可以使用相同的机制将ID设置为有用的内容,例如页面slug。

SO网友:zeo
function wp_nav_menu_remove_attributes( $menu ){
    return $menu = preg_replace(\'/ id=\\"(.*)\\" class=\\"(.*)\\"/iU\', \'\', $menu );
}
add_filter( \'wp_nav_menu\', \'wp_nav_menu_remove_attributes\' );
SO网友:Richy

此解决方案发布于wp3layout .您应该将此添加到主题的功能中。php

 
function remove_css_id_filter($var) {
    return is_array($var) ? array_intersect($var, array(\'current-menu-item\')) : \'\';
} 
add_filter( \'page_css_class\', \'remove_css_id_filter\', 100, 1);
add_filter( \'nav_menu_item_id\', \'remove_css_id_filter\', 100, 1);
add_filter( \'nav_menu_css_class\', \'remove_css_id_filter\', 100, 1);
希望这有帮助。

结束

相关推荐

Menu API not switching menus?

我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph