如何为物化框架制作wp_NAV_Menu()的自定义Walker

时间:2015-04-29 作者:Scott Wolter

我试图用materialize框架来创建WordPress主题,但我真的被导航栏部分弄糊涂了。我在互联网上搜索过,但没有找到任何东西,似乎没有人使用materialize。

我发现的唯一一件事就是用nav\\u walker制作,就像在bootstrap中一样,但我不知道如何使用materialize。

UPDATE:

这是我的导航条形码;

   <div class="navbar">
        <nav>
              <div class="nav-wrapper">
                <a href="<?php bloginfo(\'url\'); ?>" class="brand-logo"><?php bloginfo(\'title\'); ?></a>
                <a href="#" data-activates="mobile-demo" class="button-collapse"><i class="mdi-navigation-menu"></i></a>

                  <?php wp_nav_menu( array( \'theme_location\' => \'top-menu\', \'items_wrap\' => \'<ul class="right hide-on-med-and-down">%3$s</ul>\' ) ); ?>


                    <?php wp_nav_menu( array( \'theme_location\' => \'top-menu\', \'items_wrap\' => \'<ul class="side-nav" id="mobile-demo">%3$s</ul>\' ) ); ?>

              </div>
        </nav>
    </div>
PS:现在将显示菜单,但存在以下问题:

下拉菜单不起作用

2 个回复
SO网友:Guerrilla

这里没有必要使用助行器。

这段代码将输出移动折叠示例中的html。

    <nav>
        <div class="nav-wrapper">
            <a href="#!" class="brand-logo">Logo</a>
            <a href="#" data-activates="mobile-demo" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
            <?php

            $menu = array(
                \'theme_location\'  => \'main_menu\',
                \'menu_class\'      => \'right hide-on-med-and-down\',
                \'container\'       => false,
                \'depth\'           => 1
            );
            $menuMobile = array(
                \'theme_location\'  => \'main_menu\',
                \'menu_class\'      => \'side-nav\',
                \'menu_id\'         => \'mobile-demo\',
                \'container\'       => false,
                \'depth\'           => 1

            );
            wp_nav_menu($menu);

            wp_nav_menu($menuMobile);

            ?>

            </ul>
        </div>
    </nav>
如果它仍然给您带来问题,请完全按照您的需要使用HTML编写一个代码笔,然后我可以看到,从一个示例中工作并不能确切地告诉我您想要什么。

更新时间:

我已经构建了一个nav walker,它在没有移动菜单的情况下工作得很好,但如果有多个下拉菜单,则无法工作,因为nav walker方法的调用方式不符合顺序。

我尝试在walker中设置$currentItem属性,以便匹配父/子ID和类,但当它开始无序调用时,这不起作用。

我通过重写display\\u元素来传递额外的参数来实现这一点,但我不确定这是否是最好的方法,因此我将在今晚完成工作后对其进行更深入的研究。

SO网友:Scott Wolter

我做过这样的东西:

    <div class="navbar-fixed"> 
   <nav>
        <div class="nav-wrapper">
            <a href="#!" class="brand-logo"><?php _e(\'Logo\', \'newborn\'); ?></a>
            <a href="#" data-activates="mobile-demo" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
            <ul class="right hide-on-med-and-down">
                <?php wp_nav_menu( array( \'theme_location\' => \'primary-menu\' ) ); ?>
            </ul>
        <ul class="side-nav" id="mobile-demo">
          <?php wp_nav_menu( array( \'theme_location\' => \'primary-menu\' ) ); ?>
        </ul>

        </div>
    </nav>
        </div>
加上此css:

.menu ul{display: none;}
.menu li:hover ul{display: block;}
现在它起作用了。。。。但是

我在顶部提到的第4期仍然存在(当我将主页链接添加到导航栏时特别),下拉菜单也不太漂亮!这是如此简单,没有任何更改与他们的父链接。

结束

相关推荐

override a css style

我在原主题风格中有以下几行。css文件:background: none repeat scroll 0px 0px #CCC; 在我的孩子主题中。。我想删除“背景:行..”。。但是怎么做呢?Update: 好吧,把事情弄清楚。。。。因为我正在使用一个有自己风格的儿童主题。css文件。。此样式中的设置。css文件覆盖父主题中的内容。在主题的样式表中,说明了以下内容。。。.content-ver-sep { background: none repeat scroll 0px 0