add_action('admin_menu', 'create_my_sites_menu',1);
function create_my_sites_menu() {
global $current_user;
get_currentuserinfo();
$user_blogs = get_blogs_of_user($current_user->ID,true);
add_menu_page( 'My Sites', "My Sites <span class='update-plugins'><span class='pending-count'>".count($user_blogs)."</span></span>", 'unfiltered_html', 'list-my-sites', 'my_sites');
foreach($user_blogs as $k=>$blog) {
add_submenu_page( 'list-my-sites', $blog->blogname, substr($blog->blogname,0,15), 'unfiltered_html', 'siteid-'.$k, 'nothin');
}
function my_sites() {echo '';}
function nothin() {echo '';}
}
add_action('admin_menu','change_links',1);
function change_links() {
global $submenu,$menu;
$mysites = $menu['100'];
$mysites['4'] = str_replace('menu-top-first','',$mysites['4']);
unset($menu['100']);
$menu['1'] = $mysites;
$menu['1.5'] = array('','read','separator-last','','wp-menu-separator-last');
$submenu['list-my-sites']['0']['2'] = 'my-sites.php';
foreach($submenu['list-my-sites'] as $site=>$info) {
if ($site == '0') continue;
$id = str_replace('siteid-','',$submenu['list-my-sites'][$site]['2']);
$site_details = get_blogaddress_by_id($id);
$submenu['list-my-sites'][$site]['2'] = $site_details.'wp-admin/';
}
}
After staring at it for awhile, it occurred to me that it’s probably related to the admin_menu hook since that’s not run on the front end – I just haven’t had a chance to test that yet…