<sup>Answer remade and now working as per the Question specifications.</sup> To add a menu item to each site of the network if an specific plugin is active in that site, I'm using a [Must Use](http://codex.wordpress.org/Must_Use_Plugins) plugin. It only runs if `is_multisite()` and if `is_admin_bar_showing()`. In this example, the plugin is instantiated with the following values that check for the plugin Analytics360º and remove all default menu items: - *Menu item title*: `Analytics360` - *Plugin to check for*: `analytics360/analytics360.php` - *Menu item URL*: `index.php?page=analytics360.php` - *Remove defaults*: `array( 'newpost', 'comments', 'visit', 'dashboard' )` ![plugin in action][1] ![plugin in action][2] <?php /** * Plugin Name: Modify My Sites admin menu * Plugin URI: http://wordpress.stackexchange.com/q/55724/12615 * Description: Add an admin menu link to specific plugin, if it is active in the site. Can remove default items as well. * Author: Rodolfo Buaiz * Author URI: http://wordpress.stackexchange.com/users/12615/brasofilo * License: GPLv3 * * Class based in http://wordpress.stackexchange.com/a/77236/12615 **/ WPSE_55724_My_Sites_Extra_Items::init( 'Analytics360', // Menu item title 'analytics360/analytics360.php', // Plugin to check for 'index.php?page=analytics360.php', // Menu item URL array( 'newpost', 'comments', 'visit', 'dashboard' ) // Remove defaults ); class WPSE_55724_My_Sites_Extra_Items { private static $ins = null; private static $title = null; private static $plugin_file = null; private static $plugin_page = null; private static $remove_defaults = null; public static function instance() { is_null( self::$ins ) && self::$ins = new self; return self::$ins; } public static function init( $title, $plugin_file, $plugin_page, $remove_defaults ) { self::$title = $title; self::$plugin_file = $plugin_file; self::$plugin_page = $plugin_page; self::$remove_defaults = $remove_defaults; if( is_multisite() ) add_action( 'plugins_loaded', array( self::instance(), '_setup' ) ); } public function _setup() { if( is_admin_bar_showing() ) add_action( 'admin_bar_menu', array( $this, 'add_items' ), 9999 ); } /** * The global var is passed by reference in a do_action_ref_array */ public function add_items( $wp_admin_bar ) { foreach ( (array) $wp_admin_bar->user->blogs as $blog ) { switch_to_blog( $blog->userblog_id ); // Current menu ID $menu_id = 'blog-' . $blog->userblog_id; // Add URL to current-site/wp-admin/plugins.php $wp_admin_bar->add_menu( array( 'parent' => $menu_id, 'id' => $menu_id . '-p', 'title' => __( 'Plugins' ), 'href' => admin_url( 'plugins.php' ), ) ); // Remove default menu items $this->remove_items( &$wp_admin_bar, self::$remove_defaults, $menu_id ); // Add custom menu for chosen Plugin it active in current site or network activated if( current_user_can( 'manage_options' ) && ( $this->is_plugin_active( self::$plugin_file ) || $this->is_plugin_active_for_network( self::$plugin_file ) ) ) { $wp_admin_bar->add_menu( array( 'parent' => $menu_id, 'id' => $menu_id . '-my-p', 'title' => self::$title, 'href' => admin_url( self::$plugin_page ), ) ); } restore_current_blog(); } } /** * */ private function remove_items( $wp_admin_bar, $items, $menu_id ) { if( in_array( 'newpost', $items ) ) $wp_admin_bar->remove_menu( $menu_id . '-n' ); // New Post if( in_array( 'comments', $items ) ) $wp_admin_bar->remove_menu( $menu_id . '-c' ); // Comments if( in_array( 'visit', $items ) ) $wp_admin_bar->remove_menu( $menu_id . '-v' ); // Visit Site if( in_array( 'dashboard', $items ) ) $wp_admin_bar->remove_menu( $menu_id . '-d' ); // Dashboard } /** * WP function uses is_plugin_active_for_network * which doesn't work in frontend */ private function is_plugin_active( $plugin ) { return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ); } private function is_plugin_active_for_network( $plugin ) { $plugins = get_site_option( 'active_sitewide_plugins'); if ( isset($plugins[$plugin]) ) return true; return false; } } [1]: https://i.sstatic.net/o0tDH.png [2]: https://i.sstatic.net/CwnMR.png