/** * Renders Site Menu * * @access public * @param string $slug * @return void */ public static function renderSiteMenu($slug) { $locations = get_nav_menu_locations(); if (isset($locations[$slug])) { $menu = wp_get_nav_menu_object($locations[$slug]); if (isset($menu->term_id)) { $menu_items = wp_get_nav_menu_items($menu->term_id); $isFirstMenu = true; $parentMenuTemp = 0; $isSubMenu = false; $subMenuC = 0; $hasChildMenu = false; $out = '<ul class="nav navbar-nav"><li>'; foreach ((array) $menu_items as $key => $menu_item) { $hasChildMenu = MthemeCore::hasPostIdByMetaKeyAndMetaValue('menu_item_menu_item_parent', $menu_item->ID); $parentMenu = MthemeCore::getPostMeta($menu_item->ID, 'menu_item_menu_item_parent', 0); if ($parentMenu != 0) { if ($parentMenuTemp != $parentMenu) { if ($isSubMenu) { $subMenuC++; } if ($hasChildMenu) { $out .= '<ul class="dropdown-menu level-' . ($subMenuC + 1) . '"><li class="dropdown-submenu">'; } else { $out .= '<ul class="dropdown-menu level-' . ($subMenuC + 1) . '"><li>'; } } else { if ($hasChildMenu) { $out .= '</li><li class="dropdown-submenu">'; } else { $out .= '</li><li>'; } } $parentMenuTemp = $parentMenu; $isSubMenu = true; } else { if ($isSubMenu) { while ($subMenuC--) { $out .= '</li></ul>'; } $out .= '</li></ul></li><li>'; $isSubMenu = false; $subMenuC = 0; } elseif (!$isFirstMenu) { $out .= '</li><li>'; } } /*var_dump($menu_item);*/ $class_names = ''; global $post; $pageId = $post->ID; if ($menu_item->object_id == $pageId) { $class_names = 'active '; } $class_names .= implode(' ', $menu_item->classes); if (!$isSubMenu && $hasChildMenu) { $out .= '<a href="' . $menu_item->url . '" class="' . $class_names . '">' . $menu_item->title . '<span class="caret"></span></a>'; } else { $out .= '<a href="' . $menu_item->url . '" class="' . $class_names . '">' . $menu_item->title . '</a>'; } $isFirstMenu = false; } if ($isSubMenu) { /* last menu is sub menu */ $out .= '</li></ul>'; } $out .= '</li></ul>'; echo mtheme_html($out); } else { wp_dropdown_pages(); } } else { wp_dropdown_pages(); } }