WordPress.org

Make WordPress Core

Changeset 11092


Ignore:
Timestamp:
04/27/09 05:09:50 (5 years ago)
Author:
ryan
Message:

Allow menu reordering via plugin

File:
1 edited

Legend:

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

    r11032 r11092  
    2828$menu[0] = array( __('Dashboard'), 'read', 'index.php', '', 'menu-top', 'menu-dashboard', 'div' ); 
    2929 
    30 $menu[4] = array( '', 'read', '', '', 'wp-menu-separator' ); 
     30$menu[4] = array( '', 'read', 'separator1', '', 'wp-menu-separator' ); 
    3131 
    3232$menu[5] = array( __('Posts'), 'edit_posts', 'edit.php', '', 'open-if-no-js menu-top', 'menu-posts', 'div' ); 
     
    6666$_wp_last_object_menu = 25; // The index of the last top-level menu in the object menu group 
    6767 
    68 $menu[59] = array( '', 'read', '', '', 'wp-menu-separator' ); 
     68$menu[59] = array( '', 'read', 'separator2', '', 'wp-menu-separator' ); 
    6969 
    7070$menu[60] = array( __('Appearance'), 'switch_themes', 'themes.php', '', 'menu-top', 'menu-appearance', 'div' ); 
     
    117117$_wp_last_utility_menu = 80; // The index of the last top-level menu in the utility menu group 
    118118 
    119 $menu[99] = array( '', 'read', '', '', 'wp-menu-separator-last' ); 
     119$menu[99] = array( '', 'read', 'separator-last', '', 'wp-menu-separator-last' ); 
    120120 
    121121// Back-compat for old top-levels 
     
    239239 
    240240        if ( 0 == $order ) { // dashboard is always shown/single 
    241             $menu[0][4] = add_cssclass('menu-top-first menu-top-last', $top[4]); 
     241            $menu[0][4] = add_cssclass('menu-top-first', $top[4]); 
     242            $lastorder = 0; 
    242243            continue; 
    243244        } 
    244245 
    245         if ( empty($top[2]) ) { // if separator 
     246        if ( 0 === strpos($top[2], 'separator') ) { // if separator 
    246247            $first = true; 
    247             if ( $lastorder ) { 
    248                 $c = $menu[$lastorder][4]; 
    249                 $menu[$lastorder][4] = add_cssclass('menu-top-last', $c); 
    250             } 
     248            $c = $menu[$lastorder][4]; 
     249            $menu[$lastorder][4] = add_cssclass('menu-top-last', $c); 
    251250            continue; 
    252251        } 
     
    271270uksort($menu, "strnatcasecmp"); // make it all pretty 
    272271 
     272if ( apply_filters('custom_menu_order', false) ) { 
     273    $menu_order = array(); 
     274    foreach ( $menu as $menu_item ) { 
     275        $menu_order[] = $menu_item[2]; 
     276    } 
     277    unset($menu_item); 
     278    $default_menu_order = $menu_order; 
     279    $menu_order = apply_filters('menu_order', $menu_order); 
     280    $menu_order = array_flip($menu_order); 
     281    $default_menu_order = array_flip($default_menu_order); 
     282 
     283    function sort_menu($a, $b) { 
     284        global $menu_order, $default_menu_order; 
     285        $a = $a[2]; 
     286        $b = $b[2]; 
     287        if ( isset($menu_order[$a]) && !isset($menu_order[$b]) ) { 
     288            return -1; 
     289        } elseif ( !isset($menu_order[$a]) && isset($menu_order[$b]) ) { 
     290            return 1; 
     291        } elseif ( isset($menu_order[$a]) && isset($menu_order[$b]) ) { 
     292            if ( $menu_order[$a] == $menu_order[$b] ) 
     293                return 0; 
     294            return ($menu_order[$a] < $menu_order[$b]) ? -1 : 1; 
     295        } else { 
     296            return ($default_menu_order[$a] <= $default_menu_order[$b]) ? -1 : 1; 
     297        } 
     298    } 
     299 
     300    usort($menu, 'sort_menu'); 
     301    unset($menu_order, $default_menu_order); 
     302} 
     303 
    273304$menu = add_menu_classes($menu); 
    274305 
Note: See TracChangeset for help on using the changeset viewer.