Меню Materialise не работает на WordPress

Я создал тему WordPress с помощью Materialize CSS Framework, но у меня возникла проблема с панелью навигации. Это изображение моей панели навигации прямо сейчас: http://postimg.org/image/b27td128d/ Как видите, ссылка DropDown имеет проблемы и открывается по умолчанию, то же самое и на экране мобильного устройства.

Вот код Навбара:

<div class="navbar-fixed">
        <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>
                <ul class="right hide-on-med-and-down">
                  <?php wp_nav_menu(); ?>
                </ul>
                <ul class="side-nav" id="mobile-demo">
                    <?php wp_nav_menu(); ?>
                  </ul>
              </div>
        </nav>
</div>

Как я могу это исправить?


person Scott Wolter    schedule 27.04.2015    source источник
comment
вы используете меню wordpress по умолчанию (стиль)... Вы должны адаптировать меню, чтобы оно было похоже на меню Materialize   -  person Luís P. A.    schedule 27.04.2015
comment
@ЛуисП.А. Можете ли вы объяснить, что вы имеете в виду и что я должен делать?   -  person Scott Wolter    schedule 27.04.2015
comment
Вы должны настроить свое меню... проверьте это: codex.wordpress.org/Function_Reference/wp_nav_menu (Изменить классы, скрыть, заказать и т.д....)   -  person Luís P. A.    schedule 27.04.2015


Ответы (6)


wp_nav_menu генерирует список вместе со своим ul. Однако вы можете указать классы ul и идентификатор в своих меню отдельно, например, так:

<div class="navbar-fixed">
  <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(
          'menu_class' => 'right hide-on-med-and-down'
        ));
      ?>
      <?php
        wp_nav_menu(array(
          'menu_class' => 'side-nav',
          'menu_id' => 'mobile_demo'
        ));
      ?>
    </div>
  </nav>
</div>

Здесь вы можете заметить, что menu_class и menu_id соответствуют классу и идентификатору списка соответственно. Вам даже не нужно использовать теги ul.

person Nimsrules    schedule 27.04.2015
comment
Покажет ошибку для этих строк: ‹?php wp_nav_menu({ 'menu_class' =› 'right hide-on-med-and-down' }); ?› - person Scott Wolter; 27.04.2015
comment
Извините, я пропустил указание массива. Код исправлен, попробуйте сейчас, пожалуйста. - person Nimsrules; 27.04.2015
comment
Все так же, как и мой собственный код, за исключением того, что теперь он не будет работать на мобильном экране. - person Scott Wolter; 27.04.2015
comment
У вас есть ссылка, где вы загрузили это? - person Nimsrules; 27.04.2015
comment
Для версии HTML да, но для версии WP нет! причина еще не завершена. - person Scott Wolter; 27.04.2015
comment
Если можете, пожалуйста, загрузите версию для WP, чтобы я мог отладить - person Nimsrules; 27.04.2015

Я реализовывал одно и то же меню и решил следующим образом: я установил items_wrap с <ul id="slide-out">, чтобы воссоздать ту же структуру материализации меню, и, похоже, это работает:

  <div class="nav-wrapper">
      <a href="<?php bloginfo('url'); ?>" class="logo"><?php bloginfo('title'); ?></a>
      <?php
        wp_nav_menu(array(
          'menu_class' => 'right hide-on-med-and-down'
        ));
      ?>
      <?php
        wp_nav_menu(array(
          'menu_class' => 'side-nav',
          'menu_id' => 'mobilemenu',
          'items_wrap'      => '<ul id="slide-out" class="%2$s">%3$s</ul>'  
        ));
      ?>
      <a href="#" data-activates="slide-out" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
    </div>
person MonteCristo    schedule 29.04.2015

Я модифицировал уже существующий обходчик Bootstrap и добавил некоторые настройки, чтобы заставить его работать с MaterialiseCSS. Кажется, работает нормально, но я уверен, что есть вещи, которые можно улучшить в коде, так как я не большой пользователь PHP :)

https://github.com/eamonnmag/wp-bootstrap-navwalker

person Eamonn    schedule 29.11.2015

Простой способ сделать это с помощью меню Wordpress, работающего с Materialize CSS (подменю), — добавить эту строку в ваш скрипт:

$( document ).ready(function(){

// Add class to ul parent
$('#primary-menu').addClass('hide-on-med-and-down');

// Add to sub menus unique ID
$( ".sub-menu" ).each(function(index) {
    $(this).addClass( "dropdown-content" );
    $(this).attr('id', 'dropdown' + index);
});

// Get li parents, identify which have sub-menus
$( "ul#primary-menu li.menu-item-has-children > a" ).each(function(index) {
    $(this).addClass('dropdown-button');
    $(this).attr('data-activates', 'dropdown' + index);
});

// Configure dropdown
$(".dropdown-button").dropdown({
    hover: false
});
});

Просто посмотрите на структуру Materialize и воспроизведите ее в меню Wordpress;)

person Juan José González    schedule 22.02.2017

этот код работает для меня: https://github.com/Kail0/wp-materialize-navwalker в header.php

    <nav role="navigation">
    <div class="nav-wrapper container">
        <a id="logo-container" href="#" class="brand-logo">Logo</a>
        <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="fa fa-bars" aria-hidden="true"></i></a>
        <?php
                    wp_nav_menu( array(
                        'menu' => 'Primary',
                        'theme_location'=>'Primary',
                        'container' => '', 
                        'menu_class' => 'right hide-on-med-and-down',
                        'walker' => new wp_materialize_navwalker()
                    ));
        ?>
    </div>
</nav>

и этот код для ответа

нижний колонтитул.php

    $(function() {

    elemSwap = function() {
        if ($(window).width() < 992) {

            $('.nav-wrapper.container > ul').attr("id", "nav-mobile");
            $('.nav-wrapper.container > ul').removeClass('right hide-on-med-and-down').addClass('side-nav');

            $('.drag-target').on('click', function() {
                $('.side-nav').removeAttr('style');
            });
            $('nav .button-collapse').click(function(event) {
                $('.side-nav').css({
                    "transform": "translateX(0%)"
                });
            });
            $('#menu-menu .dropdown-button.main-menu-item').dropdown({
                inDuration: 300,
                outDuration: 225,
                constrain_width: true, // Does not change width of dropdown to that of the activator
                hover: false, // Activate on hover
                belowOrigin: true, // Displays dropdown below the button
                alignment: 'left' // Displays dropdown with edge aligned to the left of button
            });
            // nested dropdown initialization
            $('#menu-menu .dropdown-button.sub-menu-item').dropdown({
                inDuration: 300,
                outDuration: 225,
                constrain_width: false, // Does not change width of dropdown to that of the activator
                hover: false, // Activate on hover
                gutter: ($('.dropdown-content').width() * 3) / 3.05 + 3, // Spacing from edge
                belowOrigin: false, // Displays dropdown below the button
                alignment: 'left' // Displays dropdown with edge aligned to the left of button
            });

        } else {
            $('.nav-wrapper.container > ul').attr("id", "menu-menu");
            $('.nav-wrapper.container > ul').removeClass('side-nav').addClass('right hide-on-med-and-down');
            // main dropdown initialization
            $('#menu-menu .dropdown-button.main-menu-item').dropdown({
                inDuration: 300,
                outDuration: 225,
                constrain_width: true, // Does not change width of dropdown to that of the activator
                hover: true, // Activate on hover
                belowOrigin: true, // Displays dropdown below the button
                alignment: 'left' // Displays dropdown with edge aligned to the left of button
            });
            // nested dropdown initialization
            $('#menu-menu .dropdown-button.sub-menu-item').dropdown({
                inDuration: 300,
                outDuration: 225,
                constrain_width: false, // Does not change width of dropdown to that of the activator
                hover: true, // Activate on hover
                gutter: ($('.dropdown-content').width() * 3) / 3.05 + 3, // Spacing from edge
                belowOrigin: false, // Displays dropdown below the button
                alignment: 'left' // Displays dropdown with edge aligned to the left of button
            });
        }
    }

    elemSwap();

    $(window).resize(elemSwap);
});
person siwakorn    schedule 10.09.2017

Вы должны сделать, как показано ниже:

'menu_class'     => 'menu right hide-on-med-and-down'

Первым словом должно быть «меню».

person Dong    schedule 28.06.2018