wp_admin_bar_my_sites_menu

The timeline below displays how wordpress function wp_admin_bar_my_sites_menu has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Adds the "My Sites/[Site Name]" menu and all submenus.
 *
 * @since 3.1.0
 *
 * @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance.
 */
function wp_admin_bar_my_sites_menu($wp_admin_bar)
{
    // Don't show for logged out users or single site mode.
    if (!is_user_logged_in() || !is_multisite()) {
        return;
    }
    // Show only when the user has at least one site, or they're a super admin.
    if (count($wp_admin_bar->user->blogs) < 1 && !current_user_can('manage_network')) {
        return;
    }
    if ($wp_admin_bar->user->active_blog) {
        $my_sites_url = get_admin_url($wp_admin_bar->user->active_blog->blog_id, 'my-sites.php');
    } else {
        $my_sites_url = admin_url('my-sites.php');
    }
    $wp_admin_bar->add_node(array('id' => 'my-sites', 'title' => __('My Sites'), 'href' => $my_sites_url));
    if (current_user_can('manage_network')) {
        $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-super-admin'));
        $wp_admin_bar->add_node(array('parent' => 'my-sites-super-admin', 'id' => 'network-admin', 'title' => __('Network Admin'), 'href' => network_admin_url()));
        $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-d', 'title' => __('Dashboard'), 'href' => network_admin_url()));
        if (current_user_can('manage_sites')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-s', 'title' => __('Sites'), 'href' => network_admin_url('sites.php')));
        }
        if (current_user_can('manage_network_users')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-u', 'title' => __('Users'), 'href' => network_admin_url('users.php')));
        }
        if (current_user_can('manage_network_themes')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-t', 'title' => __('Themes'), 'href' => network_admin_url('themes.php')));
        }
        if (current_user_can('manage_network_plugins')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-p', 'title' => __('Plugins'), 'href' => network_admin_url('plugins.php')));
        }
        if (current_user_can('manage_network_options')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-o', 'title' => __('Settings'), 'href' => network_admin_url('settings.php')));
        }
    }
    // Add site links.
    $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-list', 'meta' => array('class' => current_user_can('manage_network') ? 'ab-sub-secondary' : '')));
    /**
     * Filters whether to show the site icons in toolbar.
     *
     * Returning false to this hook is the recommended way to hide site icons in the toolbar.
     * A truthy return may have negative performance impact on large multisites.
     *
     * @since 6.0.0
     *
     * @param bool $show_site_icons Whether site icons should be shown in the toolbar. Default true.
     */
    $show_site_icons = apply_filters('wp_admin_bar_show_site_icons', true);
    foreach ((array) $wp_admin_bar->user->blogs as $blog) {
        switch_to_blog($blog->userblog_id);
        if (true === $show_site_icons && has_site_icon()) {
            $blavatar = sprintf('<img class="blavatar" src="%s" srcset="%s 2x" alt="" width="16" height="16"%s />', esc_url(get_site_icon_url(16)), esc_url(get_site_icon_url(32)), wp_lazy_loading_enabled('img', 'site_icon_in_toolbar') ? ' loading="lazy"' : '');
        } else {
            $blavatar = '<div class="blavatar"></div>';
        }
        $blogname = $blog->blogname;
        if (!$blogname) {
            $blogname = preg_replace('#^(https?://)?(www.)?#', '', get_home_url());
        }
        $menu_id = 'blog-' . $blog->userblog_id;
        if (current_user_can('read')) {
            $wp_admin_bar->add_node(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => admin_url()));
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-d', 'title' => __('Dashboard'), 'href' => admin_url()));
        } else {
            $wp_admin_bar->add_node(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => home_url()));
        }
        if (current_user_can(get_post_type_object('post')->cap->create_posts)) {
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-n', 'title' => get_post_type_object('post')->labels->new_item, 'href' => admin_url('post-new.php')));
        }
        if (current_user_can('edit_posts')) {
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-c', 'title' => __('Manage Comments'), 'href' => admin_url('edit-comments.php')));
        }
        $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-v', 'title' => __('Visit Site'), 'href' => home_url('/')));
        restore_current_blog();
    }
}

WordPress Version: 5.9

/**
 * Adds the "My Sites/[Site Name]" menu and all submenus.
 *
 * @since 3.1.0
 *
 * @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance.
 */
function wp_admin_bar_my_sites_menu($wp_admin_bar)
{
    // Don't show for logged out users or single site mode.
    if (!is_user_logged_in() || !is_multisite()) {
        return;
    }
    // Show only when the user has at least one site, or they're a super admin.
    if (count($wp_admin_bar->user->blogs) < 1 && !current_user_can('manage_network')) {
        return;
    }
    if ($wp_admin_bar->user->active_blog) {
        $my_sites_url = get_admin_url($wp_admin_bar->user->active_blog->blog_id, 'my-sites.php');
    } else {
        $my_sites_url = admin_url('my-sites.php');
    }
    $wp_admin_bar->add_node(array('id' => 'my-sites', 'title' => __('My Sites'), 'href' => $my_sites_url));
    if (current_user_can('manage_network')) {
        $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-super-admin'));
        $wp_admin_bar->add_node(array('parent' => 'my-sites-super-admin', 'id' => 'network-admin', 'title' => __('Network Admin'), 'href' => network_admin_url()));
        $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-d', 'title' => __('Dashboard'), 'href' => network_admin_url()));
        if (current_user_can('manage_sites')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-s', 'title' => __('Sites'), 'href' => network_admin_url('sites.php')));
        }
        if (current_user_can('manage_network_users')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-u', 'title' => __('Users'), 'href' => network_admin_url('users.php')));
        }
        if (current_user_can('manage_network_themes')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-t', 'title' => __('Themes'), 'href' => network_admin_url('themes.php')));
        }
        if (current_user_can('manage_network_plugins')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-p', 'title' => __('Plugins'), 'href' => network_admin_url('plugins.php')));
        }
        if (current_user_can('manage_network_options')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-o', 'title' => __('Settings'), 'href' => network_admin_url('settings.php')));
        }
    }
    // Add site links.
    $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-list', 'meta' => array('class' => current_user_can('manage_network') ? 'ab-sub-secondary' : '')));
    foreach ((array) $wp_admin_bar->user->blogs as $blog) {
        switch_to_blog($blog->userblog_id);
        if (has_site_icon()) {
            $blavatar = sprintf('<img class="blavatar" src="%s" srcset="%s 2x" alt="" width="16" height="16" />', esc_url(get_site_icon_url(16)), esc_url(get_site_icon_url(32)));
        } else {
            $blavatar = '<div class="blavatar"></div>';
        }
        $blogname = $blog->blogname;
        if (!$blogname) {
            $blogname = preg_replace('#^(https?://)?(www.)?#', '', get_home_url());
        }
        $menu_id = 'blog-' . $blog->userblog_id;
        if (current_user_can('read')) {
            $wp_admin_bar->add_node(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => admin_url()));
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-d', 'title' => __('Dashboard'), 'href' => admin_url()));
        } else {
            $wp_admin_bar->add_node(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => home_url()));
        }
        if (current_user_can(get_post_type_object('post')->cap->create_posts)) {
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-n', 'title' => get_post_type_object('post')->labels->new_item, 'href' => admin_url('post-new.php')));
        }
        if (current_user_can('edit_posts')) {
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-c', 'title' => __('Manage Comments'), 'href' => admin_url('edit-comments.php')));
        }
        $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-v', 'title' => __('Visit Site'), 'href' => home_url('/')));
        restore_current_blog();
    }
}

WordPress Version: 5.8

/**
 * Add the "My Sites/[Site Name]" menu and all submenus.
 *
 * @since 3.1.0
 *
 * @param WP_Admin_Bar $wp_admin_bar
 */
function wp_admin_bar_my_sites_menu($wp_admin_bar)
{
    // Don't show for logged out users or single site mode.
    if (!is_user_logged_in() || !is_multisite()) {
        return;
    }
    // Show only when the user has at least one site, or they're a super admin.
    if (count($wp_admin_bar->user->blogs) < 1 && !current_user_can('manage_network')) {
        return;
    }
    if ($wp_admin_bar->user->active_blog) {
        $my_sites_url = get_admin_url($wp_admin_bar->user->active_blog->blog_id, 'my-sites.php');
    } else {
        $my_sites_url = admin_url('my-sites.php');
    }
    $wp_admin_bar->add_node(array('id' => 'my-sites', 'title' => __('My Sites'), 'href' => $my_sites_url));
    if (current_user_can('manage_network')) {
        $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-super-admin'));
        $wp_admin_bar->add_node(array('parent' => 'my-sites-super-admin', 'id' => 'network-admin', 'title' => __('Network Admin'), 'href' => network_admin_url()));
        $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-d', 'title' => __('Dashboard'), 'href' => network_admin_url()));
        if (current_user_can('manage_sites')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-s', 'title' => __('Sites'), 'href' => network_admin_url('sites.php')));
        }
        if (current_user_can('manage_network_users')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-u', 'title' => __('Users'), 'href' => network_admin_url('users.php')));
        }
        if (current_user_can('manage_network_themes')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-t', 'title' => __('Themes'), 'href' => network_admin_url('themes.php')));
        }
        if (current_user_can('manage_network_plugins')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-p', 'title' => __('Plugins'), 'href' => network_admin_url('plugins.php')));
        }
        if (current_user_can('manage_network_options')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-o', 'title' => __('Settings'), 'href' => network_admin_url('settings.php')));
        }
    }
    // Add site links.
    $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-list', 'meta' => array('class' => current_user_can('manage_network') ? 'ab-sub-secondary' : '')));
    foreach ((array) $wp_admin_bar->user->blogs as $blog) {
        switch_to_blog($blog->userblog_id);
        if (has_site_icon()) {
            $blavatar = sprintf('<img class="blavatar" src="%s" srcset="%s 2x" alt="" width="16" height="16" />', esc_url(get_site_icon_url(16)), esc_url(get_site_icon_url(32)));
        } else {
            $blavatar = '<div class="blavatar"></div>';
        }
        $blogname = $blog->blogname;
        if (!$blogname) {
            $blogname = preg_replace('#^(https?://)?(www.)?#', '', get_home_url());
        }
        $menu_id = 'blog-' . $blog->userblog_id;
        if (current_user_can('read')) {
            $wp_admin_bar->add_node(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => admin_url()));
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-d', 'title' => __('Dashboard'), 'href' => admin_url()));
        } else {
            $wp_admin_bar->add_node(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => home_url()));
        }
        if (current_user_can(get_post_type_object('post')->cap->create_posts)) {
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-n', 'title' => get_post_type_object('post')->labels->new_item, 'href' => admin_url('post-new.php')));
        }
        if (current_user_can('edit_posts')) {
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-c', 'title' => __('Manage Comments'), 'href' => admin_url('edit-comments.php')));
        }
        $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-v', 'title' => __('Visit Site'), 'href' => home_url('/')));
        restore_current_blog();
    }
}

WordPress Version: 5.4

/**
 * Add the "My Sites/[Site Name]" menu and all submenus.
 *
 * @since 3.1.0
 *
 * @param WP_Admin_Bar $wp_admin_bar
 */
function wp_admin_bar_my_sites_menu($wp_admin_bar)
{
    // Don't show for logged out users or single site mode.
    if (!is_user_logged_in() || !is_multisite()) {
        return;
    }
    // Show only when the user has at least one site, or they're a super admin.
    if (count($wp_admin_bar->user->blogs) < 1 && !current_user_can('manage_network')) {
        return;
    }
    if ($wp_admin_bar->user->active_blog) {
        $my_sites_url = get_admin_url($wp_admin_bar->user->active_blog->blog_id, 'my-sites.php');
    } else {
        $my_sites_url = admin_url('my-sites.php');
    }
    $wp_admin_bar->add_node(array('id' => 'my-sites', 'title' => __('My Sites'), 'href' => $my_sites_url));
    if (current_user_can('manage_network')) {
        $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-super-admin'));
        $wp_admin_bar->add_node(array('parent' => 'my-sites-super-admin', 'id' => 'network-admin', 'title' => __('Network Admin'), 'href' => network_admin_url()));
        $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-d', 'title' => __('Dashboard'), 'href' => network_admin_url()));
        if (current_user_can('manage_sites')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-s', 'title' => __('Sites'), 'href' => network_admin_url('sites.php')));
        }
        if (current_user_can('manage_network_users')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-u', 'title' => __('Users'), 'href' => network_admin_url('users.php')));
        }
        if (current_user_can('manage_network_themes')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-t', 'title' => __('Themes'), 'href' => network_admin_url('themes.php')));
        }
        if (current_user_can('manage_network_plugins')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-p', 'title' => __('Plugins'), 'href' => network_admin_url('plugins.php')));
        }
        if (current_user_can('manage_network_options')) {
            $wp_admin_bar->add_node(array('parent' => 'network-admin', 'id' => 'network-admin-o', 'title' => __('Settings'), 'href' => network_admin_url('settings.php')));
        }
    }
    // Add site links.
    $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-list', 'meta' => array('class' => current_user_can('manage_network') ? 'ab-sub-secondary' : '')));
    foreach ((array) $wp_admin_bar->user->blogs as $blog) {
        switch_to_blog($blog->userblog_id);
        $blavatar = '<div class="blavatar"></div>';
        $blogname = $blog->blogname;
        if (!$blogname) {
            $blogname = preg_replace('#^(https?://)?(www.)?#', '', get_home_url());
        }
        $menu_id = 'blog-' . $blog->userblog_id;
        if (current_user_can('read')) {
            $wp_admin_bar->add_node(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => admin_url()));
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-d', 'title' => __('Dashboard'), 'href' => admin_url()));
        } else {
            $wp_admin_bar->add_node(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => home_url()));
        }
        if (current_user_can(get_post_type_object('post')->cap->create_posts)) {
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-n', 'title' => get_post_type_object('post')->labels->new_item, 'href' => admin_url('post-new.php')));
        }
        if (current_user_can('edit_posts')) {
            $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-c', 'title' => __('Manage Comments'), 'href' => admin_url('edit-comments.php')));
        }
        $wp_admin_bar->add_node(array('parent' => $menu_id, 'id' => $menu_id . '-v', 'title' => __('Visit Site'), 'href' => home_url('/')));
        restore_current_blog();
    }
}

WordPress Version: 5.1

/**
 * Add the "My Sites/[Site Name]" menu and all submenus.
 *
 * @since 3.1.0
 *
 * @param WP_Admin_Bar $wp_admin_bar
 */
function wp_admin_bar_my_sites_menu($wp_admin_bar)
{
    // Don't show for logged out users or single site mode.
    if (!is_user_logged_in() || !is_multisite()) {
        return;
    }
    // Show only when the user has at least one site, or they're a super admin.
    if (count($wp_admin_bar->user->blogs) < 1 && !current_user_can('manage_network')) {
        return;
    }
    if ($wp_admin_bar->user->active_blog) {
        $my_sites_url = get_admin_url($wp_admin_bar->user->active_blog->blog_id, 'my-sites.php');
    } else {
        $my_sites_url = admin_url('my-sites.php');
    }
    $wp_admin_bar->add_menu(array('id' => 'my-sites', 'title' => __('My Sites'), 'href' => $my_sites_url));
    if (current_user_can('manage_network')) {
        $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-super-admin'));
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-super-admin', 'id' => 'network-admin', 'title' => __('Network Admin'), 'href' => network_admin_url()));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-d', 'title' => __('Dashboard'), 'href' => network_admin_url()));
        if (current_user_can('manage_sites')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-s', 'title' => __('Sites'), 'href' => network_admin_url('sites.php')));
        }
        if (current_user_can('manage_network_users')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-u', 'title' => __('Users'), 'href' => network_admin_url('users.php')));
        }
        if (current_user_can('manage_network_themes')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-t', 'title' => __('Themes'), 'href' => network_admin_url('themes.php')));
        }
        if (current_user_can('manage_network_plugins')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-p', 'title' => __('Plugins'), 'href' => network_admin_url('plugins.php')));
        }
        if (current_user_can('manage_network_options')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-o', 'title' => __('Settings'), 'href' => network_admin_url('settings.php')));
        }
    }
    // Add site links
    $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-list', 'meta' => array('class' => current_user_can('manage_network') ? 'ab-sub-secondary' : '')));
    foreach ((array) $wp_admin_bar->user->blogs as $blog) {
        switch_to_blog($blog->userblog_id);
        $blavatar = '<div class="blavatar"></div>';
        $blogname = $blog->blogname;
        if (!$blogname) {
            $blogname = preg_replace('#^(https?://)?(www.)?#', '', get_home_url());
        }
        $menu_id = 'blog-' . $blog->userblog_id;
        if (current_user_can('read')) {
            $wp_admin_bar->add_menu(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => admin_url()));
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-d', 'title' => __('Dashboard'), 'href' => admin_url()));
        } else {
            $wp_admin_bar->add_menu(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => home_url()));
        }
        if (current_user_can(get_post_type_object('post')->cap->create_posts)) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-n', 'title' => get_post_type_object('post')->labels->new_item, 'href' => admin_url('post-new.php')));
        }
        if (current_user_can('edit_posts')) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-c', 'title' => __('Manage Comments'), 'href' => admin_url('edit-comments.php')));
        }
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-v', 'title' => __('Visit Site'), 'href' => home_url('/')));
        restore_current_blog();
    }
}

WordPress Version: 4.9

/**
 * Add the "My Sites/[Site Name]" menu and all submenus.
 *
 * @since 3.1.0
 *
 * @param WP_Admin_Bar $wp_admin_bar
 */
function wp_admin_bar_my_sites_menu($wp_admin_bar)
{
    // Don't show for logged out users or single site mode.
    if (!is_user_logged_in() || !is_multisite()) {
        return;
    }
    // Show only when the user has at least one site, or they're a super admin.
    if (count($wp_admin_bar->user->blogs) < 1 && !current_user_can('manage_network')) {
        return;
    }
    if ($wp_admin_bar->user->active_blog) {
        $my_sites_url = get_admin_url($wp_admin_bar->user->active_blog->blog_id, 'my-sites.php');
    } else {
        $my_sites_url = admin_url('my-sites.php');
    }
    $wp_admin_bar->add_menu(array('id' => 'my-sites', 'title' => __('My Sites'), 'href' => $my_sites_url));
    if (current_user_can('manage_network')) {
        $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-super-admin'));
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-super-admin', 'id' => 'network-admin', 'title' => __('Network Admin'), 'href' => network_admin_url()));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-d', 'title' => __('Dashboard'), 'href' => network_admin_url()));
        if (current_user_can('manage_sites')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-s', 'title' => __('Sites'), 'href' => network_admin_url('sites.php')));
        }
        if (current_user_can('manage_network_users')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-u', 'title' => __('Users'), 'href' => network_admin_url('users.php')));
        }
        if (current_user_can('manage_network_themes')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-t', 'title' => __('Themes'), 'href' => network_admin_url('themes.php')));
        }
        if (current_user_can('manage_network_plugins')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-p', 'title' => __('Plugins'), 'href' => network_admin_url('plugins.php')));
        }
        if (current_user_can('manage_network_options')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-o', 'title' => __('Settings'), 'href' => network_admin_url('settings.php')));
        }
    }
    // Add site links
    $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-list', 'meta' => array('class' => current_user_can('manage_network') ? 'ab-sub-secondary' : '')));
    foreach ((array) $wp_admin_bar->user->blogs as $blog) {
        switch_to_blog($blog->userblog_id);
        $blavatar = '<div class="blavatar"></div>';
        $blogname = $blog->blogname;
        if (!$blogname) {
            $blogname = preg_replace('#^(https?://)?(www.)?#', '', get_home_url());
        }
        $menu_id = 'blog-' . $blog->userblog_id;
        if (current_user_can('read')) {
            $wp_admin_bar->add_menu(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => admin_url()));
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-d', 'title' => __('Dashboard'), 'href' => admin_url()));
        } else {
            $wp_admin_bar->add_menu(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => home_url()));
        }
        if (current_user_can(get_post_type_object('post')->cap->create_posts)) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-n', 'title' => __('New Post'), 'href' => admin_url('post-new.php')));
        }
        if (current_user_can('edit_posts')) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-c', 'title' => __('Manage Comments'), 'href' => admin_url('edit-comments.php')));
        }
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-v', 'title' => __('Visit Site'), 'href' => home_url('/')));
        restore_current_blog();
    }
}

WordPress Version: 4.8

/**
 * Add the "My Sites/[Site Name]" menu and all submenus.
 *
 * @since 3.1.0
 *
 * @param WP_Admin_Bar $wp_admin_bar
 */
function wp_admin_bar_my_sites_menu($wp_admin_bar)
{
    // Don't show for logged out users or single site mode.
    if (!is_user_logged_in() || !is_multisite()) {
        return;
    }
    // Show only when the user has at least one site, or they're a super admin.
    if (count($wp_admin_bar->user->blogs) < 1 && !current_user_can('manage_network')) {
        return;
    }
    if ($wp_admin_bar->user->active_blog) {
        $my_sites_url = get_admin_url($wp_admin_bar->user->active_blog->blog_id, 'my-sites.php');
    } else {
        $my_sites_url = admin_url('my-sites.php');
    }
    $wp_admin_bar->add_menu(array('id' => 'my-sites', 'title' => __('My Sites'), 'href' => $my_sites_url));
    if (current_user_can('manage_network')) {
        $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-super-admin'));
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-super-admin', 'id' => 'network-admin', 'title' => __('Network Admin'), 'href' => network_admin_url()));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-d', 'title' => __('Dashboard'), 'href' => network_admin_url()));
        if (current_user_can('manage_sites')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-s', 'title' => __('Sites'), 'href' => network_admin_url('sites.php')));
        }
        if (current_user_can('manage_network_users')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-u', 'title' => __('Users'), 'href' => network_admin_url('users.php')));
        }
        if (current_user_can('manage_network_themes')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-t', 'title' => __('Themes'), 'href' => network_admin_url('themes.php')));
        }
        if (current_user_can('manage_network_plugins')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-p', 'title' => __('Plugins'), 'href' => network_admin_url('plugins.php')));
        }
        if (current_user_can('manage_network_options')) {
            $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-o', 'title' => __('Settings'), 'href' => network_admin_url('settings.php')));
        }
    }
    // Add site links
    $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-list', 'meta' => array('class' => current_user_can('manage_network') ? 'ab-sub-secondary' : '')));
    foreach ((array) $wp_admin_bar->user->blogs as $blog) {
        switch_to_blog($blog->userblog_id);
        $blavatar = '<div class="blavatar"></div>';
        $blogname = $blog->blogname;
        if (!$blogname) {
            $blogname = preg_replace('#^(https?://)?(www.)?#', '', get_home_url());
        }
        $menu_id = 'blog-' . $blog->userblog_id;
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => admin_url()));
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-d', 'title' => __('Dashboard'), 'href' => admin_url()));
        if (current_user_can(get_post_type_object('post')->cap->create_posts)) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-n', 'title' => __('New Post'), 'href' => admin_url('post-new.php')));
        }
        if (current_user_can('edit_posts')) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-c', 'title' => __('Manage Comments'), 'href' => admin_url('edit-comments.php')));
        }
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-v', 'title' => __('Visit Site'), 'href' => home_url('/')));
        restore_current_blog();
    }
}

WordPress Version: 4.4

/**
 * Add the "My Sites/[Site Name]" menu and all submenus.
 *
 * @since 3.1.0
 *
 * @param WP_Admin_Bar $wp_admin_bar
 */
function wp_admin_bar_my_sites_menu($wp_admin_bar)
{
    // Don't show for logged out users or single site mode.
    if (!is_user_logged_in() || !is_multisite()) {
        return;
    }
    // Show only when the user has at least one site, or they're a super admin.
    if (count($wp_admin_bar->user->blogs) < 1 && !is_super_admin()) {
        return;
    }
    if ($wp_admin_bar->user->active_blog) {
        $my_sites_url = get_admin_url($wp_admin_bar->user->active_blog->blog_id, 'my-sites.php');
    } else {
        $my_sites_url = admin_url('my-sites.php');
    }
    $wp_admin_bar->add_menu(array('id' => 'my-sites', 'title' => __('My Sites'), 'href' => $my_sites_url));
    if (is_super_admin()) {
        $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-super-admin'));
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-super-admin', 'id' => 'network-admin', 'title' => __('Network Admin'), 'href' => network_admin_url()));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-d', 'title' => __('Dashboard'), 'href' => network_admin_url()));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-s', 'title' => __('Sites'), 'href' => network_admin_url('sites.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-u', 'title' => __('Users'), 'href' => network_admin_url('users.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-t', 'title' => __('Themes'), 'href' => network_admin_url('themes.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-p', 'title' => __('Plugins'), 'href' => network_admin_url('plugins.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-o', 'title' => __('Settings'), 'href' => network_admin_url('settings.php')));
    }
    // Add site links
    $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-list', 'meta' => array('class' => is_super_admin() ? 'ab-sub-secondary' : '')));
    foreach ((array) $wp_admin_bar->user->blogs as $blog) {
        switch_to_blog($blog->userblog_id);
        $blavatar = '<div class="blavatar"></div>';
        $blogname = $blog->blogname;
        if (!$blogname) {
            $blogname = preg_replace('#^(https?://)?(www.)?#', '', get_home_url());
        }
        $menu_id = 'blog-' . $blog->userblog_id;
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => admin_url()));
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-d', 'title' => __('Dashboard'), 'href' => admin_url()));
        if (current_user_can(get_post_type_object('post')->cap->create_posts)) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-n', 'title' => __('New Post'), 'href' => admin_url('post-new.php')));
        }
        if (current_user_can('edit_posts')) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-c', 'title' => __('Manage Comments'), 'href' => admin_url('edit-comments.php')));
        }
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-v', 'title' => __('Visit Site'), 'href' => home_url('/')));
        restore_current_blog();
    }
}

WordPress Version: 4.2

/**
 * Add the "My Sites/[Site Name]" menu and all submenus.
 *
 * @since 3.1.0
 *
 * @param WP_Admin_Bar $wp_admin_bar
 */
function wp_admin_bar_my_sites_menu($wp_admin_bar)
{
    // Don't show for logged out users or single site mode.
    if (!is_user_logged_in() || !is_multisite()) {
        return;
    }
    // Show only when the user has at least one site, or they're a super admin.
    if (count($wp_admin_bar->user->blogs) < 1 && !is_super_admin()) {
        return;
    }
    if ($wp_admin_bar->user->active_blog) {
        $my_sites_url = get_admin_url($wp_admin_bar->user->active_blog->blog_id, 'my-sites.php');
    } else {
        $my_sites_url = admin_url('my-sites.php');
    }
    $wp_admin_bar->add_menu(array('id' => 'my-sites', 'title' => __('My Sites'), 'href' => $my_sites_url));
    if (is_super_admin()) {
        $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-super-admin'));
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-super-admin', 'id' => 'network-admin', 'title' => __('Network Admin'), 'href' => network_admin_url()));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-d', 'title' => __('Dashboard'), 'href' => network_admin_url()));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-s', 'title' => __('Sites'), 'href' => network_admin_url('sites.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-u', 'title' => __('Users'), 'href' => network_admin_url('users.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-t', 'title' => __('Themes'), 'href' => network_admin_url('themes.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-p', 'title' => __('Plugins'), 'href' => network_admin_url('plugins.php')));
    }
    // Add site links
    $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-list', 'meta' => array('class' => is_super_admin() ? 'ab-sub-secondary' : '')));
    foreach ((array) $wp_admin_bar->user->blogs as $blog) {
        switch_to_blog($blog->userblog_id);
        $blavatar = '<div class="blavatar"></div>';
        $blogname = $blog->blogname;
        if (!$blogname) {
            $blogname = preg_replace('#^(https?://)?(www.)?#', '', get_home_url());
        }
        $menu_id = 'blog-' . $blog->userblog_id;
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => admin_url()));
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-d', 'title' => __('Dashboard'), 'href' => admin_url()));
        if (current_user_can(get_post_type_object('post')->cap->create_posts)) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-n', 'title' => __('New Post'), 'href' => admin_url('post-new.php')));
        }
        if (current_user_can('edit_posts')) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-c', 'title' => __('Manage Comments'), 'href' => admin_url('edit-comments.php')));
        }
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-v', 'title' => __('Visit Site'), 'href' => home_url('/')));
        restore_current_blog();
    }
}

WordPress Version: 4.1

/**
 * Add the "My Sites/[Site Name]" menu and all submenus.
 *
 * @since 3.1.0
 *
 * @param WP_Admin_Bar $wp_admin_bar
 */
function wp_admin_bar_my_sites_menu($wp_admin_bar)
{
    // Don't show for logged out users or single site mode.
    if (!is_user_logged_in() || !is_multisite()) {
        return;
    }
    // Show only when the user has at least one site, or they're a super admin.
    if (count($wp_admin_bar->user->blogs) < 1 && !is_super_admin()) {
        return;
    }
    $wp_admin_bar->add_menu(array('id' => 'my-sites', 'title' => __('My Sites'), 'href' => admin_url('my-sites.php')));
    if (is_super_admin()) {
        $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-super-admin'));
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-super-admin', 'id' => 'network-admin', 'title' => __('Network Admin'), 'href' => network_admin_url()));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-d', 'title' => __('Dashboard'), 'href' => network_admin_url()));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-s', 'title' => __('Sites'), 'href' => network_admin_url('sites.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-u', 'title' => __('Users'), 'href' => network_admin_url('users.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-t', 'title' => __('Themes'), 'href' => network_admin_url('themes.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-p', 'title' => __('Plugins'), 'href' => network_admin_url('plugins.php')));
    }
    // Add site links
    $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-list', 'meta' => array('class' => is_super_admin() ? 'ab-sub-secondary' : '')));
    foreach ((array) $wp_admin_bar->user->blogs as $blog) {
        switch_to_blog($blog->userblog_id);
        $blavatar = '<div class="blavatar"></div>';
        $blogname = $blog->blogname;
        if (!$blogname) {
            $blogname = preg_replace('#^(https?://)?(www.)?#', '', get_home_url());
        }
        $menu_id = 'blog-' . $blog->userblog_id;
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => admin_url()));
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-d', 'title' => __('Dashboard'), 'href' => admin_url()));
        if (current_user_can(get_post_type_object('post')->cap->create_posts)) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-n', 'title' => __('New Post'), 'href' => admin_url('post-new.php')));
        }
        if (current_user_can('edit_posts')) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-c', 'title' => __('Manage Comments'), 'href' => admin_url('edit-comments.php')));
        }
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-v', 'title' => __('Visit Site'), 'href' => home_url('/')));
        restore_current_blog();
    }
}

WordPress Version: 3.7

/**
 * Add the "My Sites/[Site Name]" menu and all submenus.
 *
 * @since 3.1.0
 *
 * @param WP_Admin_Bar $wp_admin_bar
 */
function wp_admin_bar_my_sites_menu($wp_admin_bar)
{
    // Don't show for logged out users or single site mode.
    if (!is_user_logged_in() || !is_multisite()) {
        return;
    }
    // Show only when the user has at least one site, or they're a super admin.
    if (count($wp_admin_bar->user->blogs) < 1 && !is_super_admin()) {
        return;
    }
    $wp_admin_bar->add_menu(array('id' => 'my-sites', 'title' => __('My Sites'), 'href' => admin_url('my-sites.php')));
    if (is_super_admin()) {
        $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-super-admin'));
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-super-admin', 'id' => 'network-admin', 'title' => __('Network Admin'), 'href' => network_admin_url()));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-d', 'title' => __('Dashboard'), 'href' => network_admin_url()));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-s', 'title' => __('Sites'), 'href' => network_admin_url('sites.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-u', 'title' => __('Users'), 'href' => network_admin_url('users.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-t', 'title' => __('Themes'), 'href' => network_admin_url('themes.php')));
        $wp_admin_bar->add_menu(array('parent' => 'network-admin', 'id' => 'network-admin-p', 'title' => __('Plugins'), 'href' => network_admin_url('plugins.php')));
    }
    // Add site links
    $wp_admin_bar->add_group(array('parent' => 'my-sites', 'id' => 'my-sites-list', 'meta' => array('class' => is_super_admin() ? 'ab-sub-secondary' : '')));
    foreach ((array) $wp_admin_bar->user->blogs as $blog) {
        switch_to_blog($blog->userblog_id);
        $blavatar = '<div class="blavatar"></div>';
        $blogname = empty($blog->blogname) ? $blog->domain : $blog->blogname;
        $menu_id = 'blog-' . $blog->userblog_id;
        $wp_admin_bar->add_menu(array('parent' => 'my-sites-list', 'id' => $menu_id, 'title' => $blavatar . $blogname, 'href' => admin_url()));
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-d', 'title' => __('Dashboard'), 'href' => admin_url()));
        if (current_user_can(get_post_type_object('post')->cap->create_posts)) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-n', 'title' => __('New Post'), 'href' => admin_url('post-new.php')));
        }
        if (current_user_can('edit_posts')) {
            $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-c', 'title' => __('Manage Comments'), 'href' => admin_url('edit-comments.php')));
        }
        $wp_admin_bar->add_menu(array('parent' => $menu_id, 'id' => $menu_id . '-v', 'title' => __('Visit Site'), 'href' => home_url('/')));
        restore_current_blog();
    }
}