2016-02-22 2 views
0

Я конвертирую html-сайт в Wordpress, и у меня проблема с меню. Я создал отдельные местоположения меню с помощью кода PHP в шаблонахПроблема в Wordpress - первое первое переопределение меню

<div id="NavItems"> 
      <?php 
       $args = array(
        'theme-location' => 'primary', 
       ); 
       wp_nav_menu($args); 
      ?> 
     </div> 

<div class="footerNav"> 
       <h3>Services</h3> 
       <?php 
        $args = array(
         'theme-location' => 'footerServ', 
        ); 
        wp_nav_menu($args); 
       ?> 
      </div> 

И functions.php имеет этот код

function register_my_menus() { 
    register_nav_menus(array(
     'primary' => __('Primary Menu'), 
     'footerServ' => __('Footer Services'), 
     'footerWork' => __('Footer Our Work'), 
     'footerLegal' => __('Footer Legal'), 
     'footerInc' => __('Footer Inc'), 
    )); 
} 
add_action('init', 'register_my_menus'); 

главное меню конфигурация выглядит следующим образом - Main Menu Wordpress Config

сноска конфигурация меню выглядит следующим образом: FooterMenu Wordpress Config

Результаты нг HTML выглядит следующим образом для главного меню

<nav role="navigation" id="MainNav" class="group"> 
... 
<div id="NavItems"> 
    <div class="menu-footer-services-container"> 
     <ul id="menu-footer-services" class="menu"> 
      <li id="menu-item-95" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-95"> 
       <a href="http://localhost/wordpress/services/mold-manufacturing/">Mold Manufacturing</a> 
      </li> 
      <li id="menu-item-96" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-96"> 
       <a href="http://localhost/wordpress/services/injection-molding/">Injection Molding</a> 
      </li> 
      <li id="menu-item-94" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-94"> 
       <a href="http://localhost/wordpress/services/thermoforming/">Thermoforming</a> 
      </li> 
      <li id="menu-item-93" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-93"> 
       <a href="http://localhost/wordpress/services/plastic-fabrication/">Plastic Fabrication</a> 
      </li> 
      <li id="menu-item-91" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-91"> 
       <a href="http://localhost/wordpress/services/custom-design/">Custom Design</a> 
      </li> 
      <li id="menu-item-92" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-92"> 
       <a href="http://localhost/wordpress/services/assembly/">Assembly</a> 
      </li> 
     </ul> 
    </div>   
</div> 
... 

меню сноски имеет тот же класс и ул.

Я сделал все, о чем я могу думать, и почти уверен, что конфигурация верна внутри wordpress и не обнаружила никаких проблем с моим кодом.

Подводя итог, Мое главное меню переписывается нижним колонтитулом, несмотря на то, что у него установлены разные местоположения и имена. Панель Wordpress имеет правильную конфигурацию для того, что я хочу. Однако результат показывает мое главное меню, имеющее класс меню нижнего колонтитула, а вместо «дома» ... он показывает «изготовление пресс-формы» ....

Я слежу за этим видео (в комментариях) для настройки моей навигации, и точно следил за его действиями.

Это почти так, как будто Wordpress позволяет мне показывать только 1 меню, несмотря на то, что я могу настроить несколько.

Заранее благодарю за любую помощь.

+0

Видео ссылается на пост - https://www.youtube.com/watch?v=AShql_Ap1Yo&list=PLpcSpRrAaOaqMA4RdhSnnNcaqOVpX7qi5&index=4 – NiemBlackPine

ответ

1
<div id="NavItems"> 
     <?php 
      $args = array(
       'theme-location' => 'primary', 
      ); 
      wp_nav_menu($args); 
     ?> 
    </div> 

Похоже, вопросы, лежит в «теме-место», кажется, работает, если изменено на «theme_location» вместо этого. Однако я останусь с моим словом, потому что потребуется больше времени, чтобы изменить его для равной функциональности. Если кому-то интересно, то обходной путь выглядит следующим образом

<div id="NavItems"> 
      <ul> 
       <?php 
        $servMenu = wp_get_nav_menu_items('(wordpress number for your menu'); 
        foreach ($servMenu as $item) { 
         $pages = get_pages(); 
         $class = ""; 
         foreach ($pages as $page) { 
          if ($page->post_title == $item->title) { 
           if (is_page($page->ID)) { 
            $class = "current-menu-item"; 
           } 
           break; 
          } 
         } ?> 
         <li class="<?php echo $class; ?>"> 
          <a href="<?php echo $item->url; ?>"> 
           <?php echo $item->title; ?> 
          </a> 
         </li> 
        <?php } 
       ?> 
      </ul> 
     </div> 
0

Используйте menu_class в args, как это будет выглядеть как класс ul.

<div id="NavItems"> 
     <?php 
      $args = array(
       'theme-location' => 'primary', 
       'menu_class' => 'primary-class',      
      ); 
      wp_nav_menu($args); 
     ?> 
    </div> 

<div class="footerNav"> 
      <h3>Services</h3> 
      <?php 
       $args = array(
        'theme-location' => 'footerServ', 
        'menu_class' => 'footer-class', 
       ); 
       wp_nav_menu($args); 
      ?> 
     </div> 
+0

Спасибо, однако класс существо неправильно - это не единственная проблема, она фактически использует ссылки меню нижнего колонтитула в верхнем меню, а не ссылки верхнего меню. Я нашел обходное решение на данный момент, но мне хотелось бы, чтобы встроенная функциональность WP работала для меня здесь. Мое обходное решение заключается в том, чтобы распечатать его вручную - https://codeshare.io/mDQ0h – NiemBlackPine

Смежные вопросы