"",
'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 = "";
return $toReturn;
}
static function makeMenuItem($items,$item){
$item_url = $item['url'];
$itemDetails = "";
$result = '
<{{tag}} class="{{has_submenu}}">'.$item['title'].'{{tag}}>{{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 = "
";
foreach ($submenus as $submenu) {
$submenuItems .=self::makeMenuItem($items,$submenu);
}
$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;
}
}