Make WordPress Core


Ignore:
Timestamp:
02/28/2010 08:00:49 PM (16 years ago)
Author:
ryan
Message:

Menu enhancements. Props ptahdunbar. fixes #11817

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/nav-menu.php

    r13473 r13512  
    11<?php
    22
    3 /*-----------------------------------------------------------------------------------*/
    4 /* Custom Navigation Functions */
    5 /* wp_custom_navigation_output() displays the menu in the back/frontend
    6 /* wp_custom_nav_get_pages()
    7 /* wp_custom_nav_get_categories()
    8 /* wp_custom_navigation_default_sub_items() is a recursive sub menu item function
    9 /*-----------------------------------------------------------------------------------*/
    10 
    11 // Outputs All Pages and Sub Items
    12 function wp_nav_menu_get_pages($counter, $type) {
    13 
     3/**
     4 * Displays a list of links and thier sub items.
     5 *
     6 * @since 3.0.0
     7 *
     8 * @param string $counter
     9 * @param string $context
     10 */
     11function wp_nav_menu_get_custom_links( $counter, $context ) {
     12    $available_links = new WP_Query(  );
     13   
     14    $args = array( 'post_status' => 'any', 'post_type' => 'nav_menu_item', 'meta_value' => 'custom' );
     15    $link_objects = new WP_Query( $args );
     16   
     17    $items_counter = $counter;
     18
     19    if ( !$link_objects->posts ) {
     20        _e('Not Found');
     21        return $items_counter;
     22    }
     23   
     24    // Display Loop
     25    foreach ( $link_objects->posts as $item ) {
     26        if ( 0 == $item->parent ) {
     27            $item = wp_setup_nav_menu_item( $item, 'item', $items_counter );
     28           
     29            switch ( $context ) {
     30                case 'menu':
     31                    ?>
     32                    <li id="menu-<?php echo $items_counter; ?>" value="<?php echo $items_counter; ?>">
     33                        <?php
     34                            echo wp_get_nav_menu_item( $item, 'menu' );
     35                            $parentli = $item->ID;
     36                            $items_counter++;
     37                            $items_counter = wp_nav_menu_sub_items( $item->ID, $items_counter, $parentli, 'categories', 'menu' );
     38                        ?>
     39                    </li>
     40                    <?php
     41                    break;
     42               
     43                case 'default':
     44                    ?>
     45                    <li>
     46                        <?php
     47                            echo wp_get_nav_menu_item( $item, 'default' );
     48                            $parentli = $item->ID;
     49                            $items_counter++;
     50                            $items_counter = wp_nav_menu_sub_items( $item->ID, $items_counter, $parentli, 'categories', 'default' );
     51                        ?>
     52                    </li>
     53                    <?php
     54                    break;
     55            }
     56        }
     57    }
     58    return $items_counter;
     59}
     60
     61/**
     62 * Displays a list of pages and thier sub items.
     63 *
     64 * @since 3.0.0
     65 *
     66 * @param string $counter
     67 * @param string $context
     68 */
     69function wp_nav_menu_get_pages( $counter, $context ) {
    1470    $pages_args = array(
    1571            'child_of' => 0,
     
    2783            'offset' => 0 );
    2884
    29     //GET all pages
    30     $pages_array = get_pages($pages_args);
     85    // Get all pages
     86    $pages_array = get_pages( $pages_args );
    3187
    3288    $items_counter = $counter;
     
    4197    foreach ( $pages_array as $post ) {
    4298        if ( $post->post_parent == 0 ) {
    43             $post = wp_setup_nav_menu_item($post, 'page', $items_counter);
    44             if ( $type == 'menu' ) {
    45                 ?>
    46 
     99            $post = wp_setup_nav_menu_item( $post, 'page', $items_counter );
     100            if ( $context == 'menu' ) {
     101                ?>
    47102                <li id="menu-<?php echo $items_counter; ?>" value="<?php echo $items_counter; ?>">
    48103                    <?php
    49                         wp_print_nav_menu_item($post, 'menu', $items_counter);
     104                        echo wp_get_nav_menu_item( $post, 'menu', $items_counter );
    50105                        $parentli = $post->ID;
    51106                        $items_counter++;
    52                         $items_counter = wp_custom_navigation_default_sub_items($post->ID, $items_counter, $parentli, 'pages', 'menu');
    53                     ?>
    54                 </li>
    55 
    56                 <?php
    57             } elseif ( $type == 'default' ) {
     107                        $items_counter = wp_nav_menu_sub_items( $post->ID, $items_counter, $parentli, 'pages', 'menu' );
     108                    ?>
     109                </li>
     110                <?php
     111            } elseif ( $context == 'default' ) {
    58112                // Sidebar Menu
    59113                ?>
    60114                 <li>
    61115                    <?php
    62                         wp_print_nav_menu_item($post, 'default');
     116                        echo wp_get_nav_menu_item( $post, 'default' );
    63117                        $parentli = $post->ID;
    64118                        $items_counter++;
    65                         $items_counter = wp_nav_menu_sub_items($post->ID, $items_counter, $parentli, 'pages', 'default');
     119                        $items_counter = wp_nav_menu_sub_items( $post->ID, $items_counter, $parentli, 'pages', 'default' );
    66120                     ?>
    67121                </li>
    68 
    69                 <?php
    70             }
    71         }
    72     }
    73 
     122                <?php
     123            }
     124        }
     125    }
    74126    return $items_counter;
    75127}
    76128
    77 // Outputs All Categories and Sub Items
    78 function wp_nav_menu_get_categories($counter, $type) {
    79 
     129/**
     130 * Displays a list of categories and thier sub items.
     131 *
     132 * @since 3.0.0
     133 *
     134 * @param string $counter
     135 * @param string $context
     136 */
     137function wp_nav_menu_get_categories( $counter, $context ) {
    80138    $category_args = array(
    81139            'type'                     => 'post',
     
    94152
    95153    // Get all categories
    96     $categories_array = get_categories($category_args);
     154    $categories_array = get_categories( $category_args );
    97155
    98156    if ( !$categories_array ) {
     
    104162    foreach ( $categories_array as $cat_item ) {
    105163        if ( $cat_item->parent == 0 ) {
    106             $cat_item = wp_setup_nav_menu_item($cat_item, 'category', $items_counter);
     164            $cat_item = wp_setup_nav_menu_item( $cat_item, 'category', $items_counter );
    107165            // Custom Menu
    108             if ( $type == 'menu' ) {
    109                 ?>
    110 
     166            if ( $context == 'menu' ) {
     167                ?>
    111168                <li id="menu-<?php echo $items_counter; ?>" value="<?php echo $items_counter; ?>">
    112169                    <?php
    113                         wp_print_nav_menu_item($cat_item, 'menu');
     170                        echo wp_get_nav_menu_item($cat_item, 'menu');
    114171                        $parentli = $cat_item->cat_ID;
    115172                        $items_counter++;
    116                         $items_counter = wp_nav_menu_sub_items($cat_item->cat_ID, $items_counter, $parentli, 'categories', 'menu');
    117                     ?>
    118 
    119                 </li>
    120 
    121                 <?php
    122             } elseif ( $type == 'default' ) {
     173                        $items_counter = wp_nav_menu_sub_items( $cat_item->cat_ID, $items_counter, $parentli, 'categories', 'menu' );
     174                    ?>
     175                </li>
     176                <?php
     177            } elseif ( $context == 'default' ) {
    123178                // Sidebar Menu
    124179                ?>
    125180                <li>
    126181                    <?php
    127                         wp_print_nav_menu_item($cat_item, 'default');
     182                        echo wp_get_nav_menu_item( $cat_item, 'default' );
    128183                        $parentli = $cat_item->cat_ID;
    129184                        $items_counter++;
    130                         $items_counter = wp_nav_menu_sub_items($cat_item->cat_ID, $items_counter, $parentli, 'categories', 'default');
    131                     ?>
    132 
    133                 </li>
    134 
    135                 <?php
    136             }
    137         }
    138     }
    139 
     185                        $items_counter = wp_nav_menu_sub_items( $cat_item->cat_ID, $items_counter, $parentli, 'categories', 'default' );
     186                    ?>
     187                </li>
     188                <?php
     189            }
     190        }
     191    }
    140192    return $items_counter;
    141193}
    142194
    143 //RECURSIVE Sub Menu Items of default categories and pages
    144 function wp_nav_menu_sub_items($childof, $items_counter, $parentli, $type, $output_type) {
    145 
     195/**
     196 * Recursive function that gets sub menu items.
     197 *
     198 * @since 3.0.0
     199 *
     200 * @param string $childof
     201 * @param string $items_counter
     202 * @param string $parentli
     203 * @param string $context
     204 * @param string $output_type
     205 */
     206function wp_nav_menu_sub_items( $childof, $items_counter, $parentli, $context, $output_type ) {
    146207    $counter = $items_counter;
    147208
     
    160221    }
    161222
    162     if ( $type == 'categories' ) {
     223    if ( $context == 'categories' ) {
    163224        // Get Sub Category Items
    164225        $item_type = 'category';
    165226        $sub_array = get_categories($sub_args);
    166     } elseif ($type == 'pages') {
     227    } elseif ($context == 'pages') {
    167228        // Get Sub Page Items
    168229        $item_type = 'page';
     
    173234    }
    174235
    175 
    176236    if ( $sub_array ) {
    177237        ?>
    178         <ul id="sub-menu-<?php echo $type ?>">
    179 
     238        <ul id="sub-menu-<?php echo $context ?>">
    180239        <?php
    181240        // Display Loop
    182241        foreach ( $sub_array as $sub_item ) {
    183             $sub_item = wp_setup_nav_menu_item($sub_item, $item_type, $counter);
    184 
     242            $sub_item = wp_setup_nav_menu_item( $sub_item, $item_type, $counter );
    185243            if ( $output_type == 'menu' ) {
    186244                ?>
    187245                <li id="menu-<?php echo $counter; ?>" value="<?php echo $counter; ?>">
    188246                    <?php
    189                         wp_print_nav_menu_item($sub_item, 'menu');
     247                        echo wp_get_nav_menu_item( $sub_item, 'menu' );
    190248                        $counter++;
    191                         $counter = wp_nav_menu_sub_items($sub_item->ID, $counter, $sub_item->ID, $type, 'menu');
    192                     ?>
    193 
     249                        $counter = wp_nav_menu_sub_items( $sub_item->ID, $counter, $sub_item->ID, $context, 'menu' );
     250                    ?>
    194251                </li>
    195252                <?php
     
    199256                <li>
    200257                    <?php
    201                         wp_print_nav_menu_item($sub_item, 'default');
     258                        echo wp_get_nav_menu_item( $sub_item, 'default' );
    202259                        //$counter++;
    203                         $counter = wp_nav_menu_sub_items($sub_item->ID, $counter, $sub_item->ID, $type, 'default');
     260                        $counter = wp_nav_menu_sub_items( $sub_item->ID, $counter, $sub_item->ID, $context, 'default' );
    204261                    ?>
    205262                </li>
     
    209266        }
    210267        ?>
    211 
    212268        </ul>
    213 
    214269    <?php
    215270    }
    216 
    217271    return $counter;
    218272}
    219 /*
    220 function wp_nav_menu_setup($override = false) {
    221     // Custom Navigation Menu Setup
    222 
    223     // Override for menu descriptions
    224     update_option('wp_settings_nav_menu_advanced_options', 'yes');
    225 
    226     $menus = wp_get_nav_menus();
    227     if ( !empty( $menus ) ) {
    228         foreach ( $menus as $menu ) {
    229             wp_delete_nav_menu( $menu->term_id );
    230         }
    231     }
    232 
    233     wp_create_nav_menu( __('Main') );
    234 }
    235 /**/
    236273?>
Note: See TracChangeset for help on using the changeset viewer.