1

I found this plugin and it disable plugins for users who are logged in, how can I change it to make disable plugins for contributor user role only?

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 inside the WP Admin area
    if ( is_user_logged_in() & !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;
    }
  • is_admin() doesn't test if you're an administrator, it tests if you're in the admin area, the same way is_home, is_archive. and is_single work. is_admin will return true for a subscriber looking at WP Admin, and false for a super admin on the frontend – Tom J Nowell Nov 19 '16 at 2:00
2

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;
    }
  • Does a "role" work here? Contributes is a role not a capability right? – Nathan Powell Nov 19 '16 at 4:06
  • 1
    Never mind, it checks out ;) – Nathan Powell Nov 19 '16 at 4:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.