在移动视图中将两个单独的WP菜单合并为一个

时间:2017-01-01 作者:nicklas bryntesson

一段时间以来,我一直在试图找到一个体面的问题解决方案。在我正在构建的主题中,我有一个顶部的“管理栏”菜单和一些联系人链接,下面是我的“徽标区域”和一个主菜单。

我想在mobile view中将这些菜单合并为一个菜单,但在合并时仍对每个单独的菜单保持某种形式的控制(每个菜单中的字体大小不同,等等)。

当然,我可以构建第四个菜单,其中包含我只需要在移动视图中显示的所有链接,并隐藏我的常规菜单,但这真的是实现此场景的最佳方式吗?

这是我的完整标题标记:

<header id="masthead" class="site-header" role="banner">

    <?php if ( has_nav_menu( \'admin\' ) ) : ?>
        <nav id="top-nav" class="top-bar menues" role="navigation"> 
                <?php wp_nav_menu( array( \'theme_location\' => \'admin\' ) ); ?>
        </nav><!-- #top-nav -->
    <?php endif; ?>

    <div class="site-branding wrap">
        <figure class="site-logo">
            <a href="<?php echo esc_url( home_url( \'/\' ) ); ?>" rel="home">
                <img class="inject-me" src="<?php echo esc_url( get_template_directory_uri() ); ?>/icons/logo.svg" alt="logo">
            </a>
        </figure><!-- .site-logo -->    
    </div><!-- .site-branding -->

    <?php if ( has_nav_menu( \'primary\' ) ) : ?>
        <nav id="site-navigation" class="main-navigation menues" role="navigation">
            <button class="menu-toggle" aria-controls="primary-menu" aria-expanded="false"><?php esc_html_e( \'Menu\', \'testsite\' ); ?></button>
            <?php wp_nav_menu( array( \'theme_location\' => \'primary\', \'menu_id\' => \'primary-menu\', \'menu_class\' => \'nav-menu\' ) ); ?>
        </nav><!-- #site-navigation -->
    <?php endif; ?>


</header><!-- #masthead -->
我看过一些使用jquery的代码提示?将一个菜单克隆到另一个菜单,但决不克隆任何特定于WordPress的菜单。我试图实现的结果是,在mobile view中,沿着主菜单下的“管理栏”添加标签,这样您就可以得到一长串链接。

有人有类似的问题吗?

2 个回复
SO网友:AstralProgrammer

我也有同样的问题。我选择的解决方案是“合并”菜单,将它们放在单个div包装器下,但将它们放在单独的div类上。

类似这样:

<div class="menu-wrapper">
   <div class="menu1">
     <?php
            wp_nav_menu( array(
                \'theme_location\'  => \'menu-1\',
                \'menu_id\'         => \'top-menu\',
            ) );
        ?>
   </div>
   <div class="menu2">
     <?php
            wp_nav_menu( array(
                \'theme_location\'  => \'menu-2\',
                \'menu_id\'         => \'main-menu\',
            ) );
        ?>
   </div>
</div>
如果要“合并”实际菜单对象,请尝试通过将菜单项放置在变量上wp_get_nav_menu_items() 然后array_merge($menu1, $menu2). 至于对元素的控制,您可以在使用合并列表创建新菜单HTML时添加标识符。

我不确定这是否是你正在寻找的答案,也不确定这是否是最好的方法。希望有帮助。

SO网友:prosti

我认为你只需要辅导。我会在其他两个菜单的基础上自动创建第四个菜单。

如何以及为什么?

尽可能地懒惰,因为它可以帮助你以更实际的方式思考。因此,在更新其他两个菜单时,需要更新第四个菜单。这是懒惰。

移动电话呢?你很好,你将能够为你的第四个菜单创建一个只在移动设备上可用的类。