- // Only activate plugins which are not already active.
- $check = $network_wide ? 'is_plugin_active_for_network' : 'is_plugin_active';
- foreach ( $plugins as $i => $plugin )
- if ( $check( $plugin ) )
- unset( $plugins[ $i ] );
+ if ( is_network_admin() ) {
+ foreach ( $plugins as $i => $plugin ) {
+ // Only activate plugins which are not already network activated.
+ if ( is_plugin_active_for_network( $plugin ) ) {
+ unset( $plugins[ $i ] );
+ }
+ }
+ } else {
+ foreach ( $plugins as $i => $plugin ) {
+ // Only activate plugins which are not already active and are not network-only when on Multisite.
+ if ( is_plugin_active( $plugin ) || ( is_multisite() && is_network_only_plugin( $plugin ) ) ) {
+ unset( $plugins[ $i ] );
+ }
+ }
+ }