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;
                }
            }
        }
    }
}
Beispiel #2
0
 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);
 }