function wptouch_build_wordpress_menu_tree($parent = 0, $depth = 1, &$data, $exclude_disabled = false, $parent_object = false) { global $wptouch_pro; $items = wptouch_get_wordpress_menu_items($parent); if ($depth > 1 && $parent_object) { $menu_data = wptouch_create_menu_item($parent_object->page_id, $depth, $parent_object->title, 'link', false, 0, true, $parent_object->item_link, false); $data[$parent_object->title] = $menu_data; } if ($items) { // iterate through all items foreach ($items as $item) { $menu_item_type = get_post_meta($item->ID, '_menu_item_type', TRUE); $object_id = get_post_meta($item->ID, '_menu_item_object_id', TRUE); $menu_target = get_post_meta($item->ID, '_menu_item_target', TRUE); $post_title = $item->post_title; if ($object_id) { switch ($menu_item_type) { case 'post_type': $post_info = get_post($object_id); if (!$post_title) { $post_title = $post_info->post_title; } $menu_class = $wptouch_pro->get_class_for_webapp_ignore(get_permalink($object_id)); if ($menu_target == '_blank') { $menu_class = trim($menu_class) . ' external target'; } $menu_data = wptouch_create_menu_item($item->ID, $depth, $post_title, 'link', false, 0, false, get_permalink($object_id), $menu_class, $post_info->ID); if (wptouch_wordpress_menu_has_children($item->ID)) { $sub_menu = array(); wptouch_build_wordpress_menu_tree($item->ID, $depth + 1, $sub_menu, $exclude_disabled, $menu_data); $menu_data->has_children = true; $menu_data->submenu = $sub_menu; $menu_data->item_type = 'menu'; } $data[$post_title] = $menu_data; break; case 'taxonomy': $object_type = get_post_meta($item->ID, '_menu_item_object', TRUE); $term_data = get_term_by('id', $object_id, $object_type); $link = get_term_link((int) $term_data->term_id, $object_type); if (!$post_title) { $post_title = $term_data->name; } $menu_data = wptouch_create_menu_item($item->ID + WPTOUCH_ICON_CATEGORY_BASE, $depth, $post_title, 'link', false, 0, false, $link, $wptouch_pro->get_class_for_webapp_ignore($link)); if (wptouch_wordpress_menu_has_children($item->ID)) { $sub_menu = array(); wptouch_build_wordpress_menu_tree($item->ID, $depth + 1, $sub_menu, $exclude_disabled, $menu_data); $menu_data->has_children = true; $menu_data->submenu = $sub_menu; $menu_data->item_type = 'menu'; } $data[$post_title] = $menu_data; break; case 'custom': $menu_class = $wptouch_pro->get_class_for_webapp_ignore(get_post_meta($item->ID, '_menu_item_url', TRUE)); if ($menu_target == '_blank') { $menu_class = trim($menu_class) . ' external target'; } $menu_data = wptouch_create_menu_item($item->ID + WPTOUCH_ICON_CUSTOM_BASE, $depth, $post_title, 'link', false, 0, false, get_post_meta($item->ID, '_menu_item_url', TRUE), $menu_class); if (wptouch_wordpress_menu_has_children($item->ID)) { $sub_menu = array(); wptouch_build_wordpress_menu_tree($item->ID, $depth + 1, $sub_menu, $exclude_disabled, $menu_data); $menu_data->has_children = true; $menu_data->submenu = $sub_menu; $menu_data->item_type = 'menu'; } $data[$post_title] = $menu_data; break; } } } } }
function add_static_menu_items($menu_items) { $top_items = array(); $bottom_items = array(); $settings = $this->get_settings(); // Add the Custom Page Templates here if (count($this->custom_page_templates)) { $count = 1; foreach ($this->custom_page_templates as $page_name => $page_info) { $bottom_items[$page_name] = wptouch_create_menu_item(WPTOUCH_ICON_CUSTOM_PAGE_TEMPLATES - $count, 1, $page_name, 'link', false, 0, false, get_bloginfo('url') . '?wptouch_page_template=' . $page_info[0]); $count++; } } // Add Home to the menu if it's enabled if ($settings->menu_show_home) { $top_items[__('Home', 'wptouch-pro')] = wptouch_create_menu_item(WPTOUCH_ICON_HOME, 1, __('Home', 'wptouch-pro'), 'link', false, 0, false, get_bloginfo('url')); } // Add email to the menu if it's enabled if ($settings->menu_show_email) { $email_address = get_option('admin_email'); if ($settings->menu_custom_email_address) { $email_address = $settings->menu_custom_email_address; } $bottom_items[__('Email', 'wptouch-pro')] = wptouch_create_menu_item(WPTOUCH_ICON_EMAIL, 1, __('Email', 'wptouch-pro'), 'link', false, 0, false, 'mailto:' . $email_address, 'email'); } // Add RSS icon to the menu if it's enabled if ($settings->menu_show_rss) { $bottom_items[__('RSS', 'wptouch-pro')] = wptouch_create_menu_item(WPTOUCH_ICON_RSS, 1, __('RSS', 'wptouch-pro'), 'link', false, 0, false, wptouch_get_bloginfo('rss_url'), 'feed'); } for ($i = 1; $i <= 3; $i++) { $text_name = 'custom_menu_text_' . $i; $link_name = 'custom_menu_link_' . $i; $link_spot = 'custom_menu_position_' . $i; $link_class = 'custom_menu_force_external_' . $i; if ($settings->{$text_name} && $settings->{$link_name}) { $custom_class = false; if (isset($settings->{$link_class}) && $settings->{$link_class}) { $custom_class = 'external'; } if ($settings->{$link_spot} == 'top') { $top_items[$settings->{$text_name}] = wptouch_create_menu_item(-100 - $i, 1, $settings->{$text_name}, 'link', false, 0, false, $settings->{$link_name}, $custom_class); } else { $bottom_items[$settings->{$text_name}] = wptouch_create_menu_item(-100 - $i, 1, $settings->{$text_name}, 'link', false, 0, false, $settings->{$link_name}, $custom_class); } } } // Make sure the top menu items override the bottom ones foreach ($top_items as $key => $value) { if (isset($menu_items[$key])) { unset($menu_items[$key]); } } // Make sure the top menu items override the bottom ones foreach ($bottom_items as $key => $value) { if (isset($menu_items[$key])) { unset($menu_items[$key]); } } return array_merge($top_items, $menu_items, $bottom_items); }