web-dev-qa-db-fra.com

Désactiver les plugins pour un rôle d'utilisateur spécifique

J'ai trouvé ce plugin qui désactive les plugins pour les utilisateurs connectés. Comment puis-je le modifier pour créer des plugins désactivés uniquement pour le rôle d'utilisateur contributeur?

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;
    }
1
Cohagen

Essaye celui-là. Je viens de changer que current_user_can('contributor') au lieu de 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;
    }
2
Ranuka