Кастомное меню WordPress через wp_get_nav_menu_items()

Иногда, меню на сайте бывает настолько сложным или нестандартным, что использование привычной функции wp_nav_menu() невозможно.

Поэтому, предлагаем Вам рассмотреть возможность вывода меню WordPress через функцию wp_get_nav_menu_items().

Вставляйте этот код в нужное место шаблона и кастомизируйте под свою структуру:

<?php
     $menu_name = 'top_menu'; // название меню
     $locations = get_nav_menu_locations();
     $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
     $menuitems = wp_get_nav_menu_items( $menu->term_id, array( 'order' => 'DESC' ) );
?>
<nav class="wrap_custom_menu">
<?php
     $count = 0;
     $submenu = false;
													
     foreach( $menuitems as $item ):
          $link = $item->url;
          $title = $item->title;
          if(!$item->menu_item_parent):
          $parent_id = $item->ID;
     ?>
          <a href="<?php echo $link; ?>"><?php echo $title; ?></a> <!-- верхний пункт меню -->
          <?php endif; ?>
          <?php if ( $parent_id == $item->menu_item_parent ): ?>
               <?php if ( !$submenu ): $submenu = true; ?>
                    <ul class="dropdown-menu"> <!-- выпадающее меню -->
               <?php endif; ?>
                         <li>
                              <a href="<?php echo $link; ?>"><?php echo $title; ?></a>
                         </li>
                         <?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id && $submenu ): ?>
                    </ul>
               <?php $submenu = false; endif; ?>
               <?php endif; ?>
               <?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id ): ?>                         
               <?php $submenu = false; endif; ?>
               <?php $count++; endforeach; ?>
</nav>

 

Другие статьи

Быстрая связь