Disable plugins for a specific user role

Try this one. I just changed only current_user_can('contributor') instead of is_user_logged_in().

add_filter( 'option_active_plugins', 'disable_logged_in_plugin' );

function disable_logged_in_plugin( $plugins ) {

    // The 'option_active_plugins' hook occurs before any user information get generated,
    // so we need to require this file early to be able to check for logged in status
    require (ABSPATH . WPINC . '/pluggable.php');

    // If we are logged in, and NOT an admin...
    if ( current_user_can('contributor') & !is_admin() ) {

        // Use the plugin folder and main file name here.
        // is used here as an example
           $plugins_not_needed = array ('embed-image-links/embed-image-links.php',
           'external-featured-image/main.php','wp-noexternallinks/wp-noexternallinks.php' );
            foreach ( $plugins_not_needed as $plugin ) {
                $key = array_search( $plugin, $plugins );
                if ( false !== $key ) {
                    unset( $plugins[ $key ] );
                }
            }
        }

        return $plugins;
    }

Leave a Comment