"", 'location' => "main-menu" ), $atts ); self::$id = $atts['id']; self::$location = (!empty($atts['location'])) ? $atts['location'] : self::$id; self::$unique = 'drop_' . self::$id ; self::$url = esc_url(get_permalink()); $locations = get_nav_menu_locations(); $menu = FALSE; if (isset($locations[self::$location])) { $menu = wp_get_nav_menu_object($locations[self::$location]); } if (!$menu) { $menu = wp_get_nav_menu_object(self::$id); } if (!$menu) { $menu = wp_get_nav_menu_object('main-menu'); } if ($menu) { $id = $menu->term_id; } if(empty($id)) { $id = self::$id; } $simpleItems = array(); $items = wp_get_nav_menu_items( $id, array( 'order' => 'ASC','orderby' => 'menu_item_parent', ) ); $menuTree = ""; if(!$items){ $items = get_pages(array('hierarchical' => 0, 'parent' => 0)); $result = array(); foreach ($items as $key => $item) { $result[] = array( "id" => $item->ID, "ID" => $item->ID, "title" => $item->post_title, "order" => $item->menu_order, "url" => esc_url(get_permalink($item)), "parent" => 0, "pageID"=> 0, "target"=> '' ); } $items = $result; $blog_page = get_option( 'page_for_posts' ); if($blog_page){ $lastIndex = count($items) -1; for ($i=0; $i < count($items) ; $i++) { $item = $items[$i]; if($item['ID'] == $blog_page){ $last =$items[$lastIndex]; $items[$lastIndex] = $items[$i]; $items[$i] = $last; break; } } } $menu = '
' .''; $menuItems = ""; foreach ($items as $item) { if($item['parent']==0){ $menuItems .= self::makeMenuItem($items,$item); } } $menu = str_replace("{{menu_items}}", $menuItems, $menu); } else { $items = self::simplifyMenu($items); $menu = '
' .''; $menuItems = ""; foreach ($items as $item) { if($item['parent']==0){ $menuItems .= self::makeMenuItem($items,$item); } } $menu = str_replace("{{menu_items}}", $menuItems, $menu); } $menu .= '
'; $toReturn = "
". $menu . ''; $toReturn .= "
"; return $toReturn; } static function makeMenuItem($items,$item){ $item_url = $item['url']; $itemDetails = ""; $result = '
  • <{{tag}} class="{{has_submenu}}">'.$item['title'].'{{submenus}}
  • '; if(self::$url === false){ self::$url = $item['url']; } $submenus = array(); foreach ($items as $submenu) { if($submenu['parent'] == $item['id']){ $submenus[] = $submenu; } } if(count($submenus)){ $submenuItems = ""; $result = str_replace('{{submenus}}', $submenuItems, $result); $result = str_replace('{{class_type}}', '', $result); $result = str_replace('{{has_submenu}}', 'branch', $result); $result = str_replace('{{tag}}', 'span', $result); $target= get_post_meta($item['id'],'_menu_item_target',true); $result = str_replace('{{target}}', $target, $result); } else { if($item['url'] == self::$url){ $result = str_replace('{{class_type}}', 'class="sel"', $result); } else { $result = str_replace('{{class_type}}', '', $result); } $result = str_replace('{{has_submenu}}', 'leaf', $result); $result = str_replace('{{submenus}}', '', $result); $result = str_replace('{{tag}}', 'font', $result); $target= get_post_meta($item['id'],'_menu_item_target',true); $result = str_replace('{{target}}', $target, $result); } return $result; } static function simplifyMenu($items){ $result = array(); if($items) foreach ($items as $item) { $result[] = array( "id" => $item->ID, "ID" => $item->ID, "title" => $item->title, "order" => $item->menu_order, "url" => esc_url($item->url), "parent" => $item->menu_item_parent, "pageID"=> get_post_meta($item->ID, '_menu_item_object_id', true), "target"=> get_post_meta($item->ID, '_menu_item_target', true), ); } return $result; } }