我正在建立一个wordpress网站,带有动态wordpress菜单+一级下拉菜单(子菜单)。由于我的下拉列表有点棘手,需要特殊的CSS,因此我尝试使用以下代码删除wordpress自动为菜单提供的样式:
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\' );
代码运行得很好,从UL菜单中删除了所有stling,并保留了纯UL-LI-HTML。现在我的下拉列表有点棘手,需要特殊的css。我在网上到处寻找一个可以删除
class="sub-menu" 完全来自ul,并为我提供了使用特殊DIV动态包装此子菜单ul的选项,并为其提供一个类(使用jquery完成)
要尝试演示我要实现的目标,请查看以下HTML:
<div class="navigation">
<ul>
<li><a href="#">link</a></li>
<li><a href="#">link</a>
<div class="sub-nav">
<span> </span>
<ul>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
</ul>
</div>
</li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
</ul>
</div>
说明:
有一个主DIV,其类名为:"navigation"
在一个简单菜单(ul li a)下拉列表中,包含一个div,该div的类名为:"sub-nav"在子菜单的ul之前有一个span标记(我正在使用jquery进行响应)这就是实际发生的情况:<div class="navigation">
<ul>
<li><a href="http://localhost/tusso/">link</a></li>
<li><a href="http://localhost/tusso/?cat=1">link</a>
<ul class="sub-menu">
<span> </span>
<li><a href="http://localhost/tusso/?cat=1">link</a></li>
<li><a href="http://localhost/tusso/?cat=1">link</a></li>
</ul>
</li>
<li><a href="http://localhost/tusso/?cat=1">link</a></li>
<li><a href="http://localhost/tusso/?cat=1">link</a></li>
</ul>
</div>
我无法摆脱:什么都无法摆脱。尝试了许多解决方案。什么都没用。请帮忙。谢谢Gil
最合适的回答,由SO网友:Robert Bouten 整理而成
任何对代码感兴趣的人都可以删除您想要的任何类。我刚刚处理了根主题,他们做了如下替换。您只需在列表中添加要替换的类。
/**
* Replace various active menu class names with "active" or nothing
*
*/
function roots_wp_nav_menu($text) {
$replace = array(
\'current-menu-item\' => \'active\',
\'current-menu-parent\' => \'active\',
\'menu-item-type-post_type\' => \'\',
\'menu-item-object-page\' => \'\',
);
$text = str_replace(array_keys($replace), $replace, $text);
return $text;
}
add_filter(\'wp_nav_menu\', \'roots_wp_nav_menu\');