将类添加到wp_nav_menu的menu_class会将类添加到div而不是ul

3

我对WordPress主题开发非常新手。我试图在新创建的主题中创建一个Twitter Bootstrap菜单,如下所示,在header.php页面中:

$defaults = array(
                'theme_location'  => 'header-menu',
                'menu'            => '',
                'container'       => '',
                'container_class' => '',
                'container_id'    => '',
                'menu_class'      => 'navbar-collapse collapse',
                'menu_id'         => 'navbar',
                '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'          => ''
            );

        wp_nav_menu( $defaults );

使用上面的代码,我希望将一个类添加到 ulnavbar-collapse collapse,但实际上它生成了以下的 HTML 代码: <div class="navbar-collapse collapse"><ul><li class="page_item page-item-11"> 等等。如何添加 ul 类?

尝试将类添加到“container_class”参数中? - Danijel
@Danijel 我尝试在那里添加类,但没有显示任何地方 :( - Nitish
3个回答

1

请检查您是否通过register_nav_menus注册了“header-menu”。删除theme_location => 'header-menu'将解决问题,直到您正确注册导航ID为止。

您应该在functions.php中添加以下内容

register_nav_menus( array(
    'header-menu' => __( 'Header Menu', 'domain' ),
) );

我已经在functions.php中添加了以下代码:function themeone_register_theme_menu() { register_nav_menu( 'primary', 'Main Navigation Menu' ); } add_action( 'init', 'themeone_register_theme_menu' );,但是仍然得到相同的结果! - Nitish
“primary”是theme_location属性,在你的第一个示例中,你正在调用“header-menu”。请参考我的解决方案,了解你应该使用什么。 - Jonathan Garrett

0

尝试查看已经创建的函数像这样的函数。它将创建正确的语法,使菜单正常工作。


0
由于没有人解决您的问题,我想为未来的用户提供一个解决方案。该解决方案在 wp_nav_menu 函数的 container 参数中。

Documentation: https://developer.wordpress.org/reference/functions/wp_nav_menu/

  • container string - 是否包装ul,以及用什么包装它。默认为'div'。

要将参数menu_class添加到正确的元素(在您的情况下是ul元素)中,请定义容器参数为div,如下所示。然后,参数container_class将具有默认类'menu-{menu slug}-container',因为它没有给定任何值。container_id参数也将为空,因为没有给定任何值。

$defaults = array(
'theme_location'    => 'header-menu',
'container'     => 'div',
'container_class'   => '',
'container_id'      => '',
'menu_id'       => 'navbar',
'menu_class'        => 'navbar-collapse collapse',
);

        wp_nav_menu( $defaults );

然后将menu_class和menu_id参数添加到ul元素中,ul元素将如下所示:<ul id="navbar" class="navbar-collapse collapse">

如果您不想要div容器,请删除container_class和container_id,并将container参数保留为ul值,如下所示:

'theme_location'    => 'header-menu',
'container'     => 'ul',                                    
'menu_id'       => 'navbar',
'menu_class'        => 'navbar-collapse collapse', 


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接