从菜单容器中删除该类

时间:2012-02-06 19:39:52

标签: wordpress

我将容器从我的菜单从DIV更改为nav,但我也想摆脱class属性。我怎么做的?这似乎不起作用......

<?php wp_nav_menu( array("container" => "nav", "container_class" => '' ) ); ?>

6 个答案:

答案 0 :(得分:1)

如果我正确关注,您是否可以转到存储wp_nav_menu()函数的源文件,该函数位于wp-includes / nav-menu-template.php中并从那里删除代码?

在orignal文件中查找此默认值部分

$defaults = array( 'menu' => '', 'container' => 'div', 'container_class' => '', 'container_id' => '', 'menu_class' => 'menu', 'menu_id' => '',
    'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    'depth' => 0, 'walker' => '', 'theme_location' => '' );

如果你看到你的标签有id =“%1 $ s”和class =“%2 $ s”,请删除课程位,我认为这样可以解决你的问题。

我一直在寻找同样的东西,发现这篇文章和Killer_Alien_Monk的解决方案,但决定必须有一种方法来修改orignal功能:)

答案 1 :(得分:1)

我找到的最佳解决方案是手动创建容器,如下所示:

<nav id="headerMenu"><?php wp_nav_menu(array(
    'theme_location' => 'header-menu',
    'container' => ''
)); ?></nav>

这样,Wordpress就无法向容器添加类。

答案 2 :(得分:0)

如果我理解你的问题,那么删除像这样的“container_class”选项应该有效:

<?php wp_nav_menu( array("container" => "nav" )); ?>

编辑:我只是检查文档,如果没有conatainer_class,它会用一些默认类替换它。搜索谷歌一段时间后,我找不到任何可以过滤掉你的输出的东西,所以我只是定义了一个自定义函数。您在functions.php中写下此内容,然后在wp_nav_menu()调用此函数custom_wp_nav_menu()而不是在同一个地方调用

function custom_wp_nav_menu()
{
    $options= array( 'theme_location' => 'header-menu', // Setting up the location for the main-menu, Main Navigation.
    'menu_class' => 'dropdown', //Adding the class for dropdowns
    'container_id' => 'navwrap', //Add CSS ID to the containter that wraps the menu.
    'fallback_cb' => 'wp_page_menu',
    'container_class' => " ",
    'echo' => false
    );
    $nav = wp_nav_menu($options);
    $nav = str_replace( 'class=" "', '',  $nav );  
    echo $nav;
} // function

答案 3 :(得分:0)

结束通过编辑位于 wp-includes / nav_menu_template.php 的几行,如容器的第191行来解决问题:

[原始来源]

$class = $args->container_class ? ' class="' . esc_attr( $args->container_class ) . '"' : ' class="menu-'. $menu->slug .'-container"';


[我的编辑]

$class = $args->container_class ? ' class="' . esc_attr( $args->container_class ) . '"' : '';

答案 4 :(得分:0)

我认为您可以使用item_wrap参数,默认item_wrap参数为<ul id="%1$s" class="%2$s">%3$s</ul>

所以你可以使用这样的东西:

<?php wp_nav_menu( array("container" => "nav", "items_wrap" => '<ul>%3$s</ul>' )); ?>

答案 5 :(得分:-2)

你嫁给了使用php的想法吗?如果没有,jQuery的removeClass方法似乎是一个可能的候选者,如果你试图动态删除该类。