web-dev-qa-db-ja.com

特定のユーザーロールのプラグインを無効にする

このプラグインを見つけて、ログインしているユーザーのプラグインを無効にします。投稿者ユーザーの役割のプラグインを無効にするように変更するにはどうすればよいですか?

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

これを試してください。私はcurrent_user_can('contributor')の代わりに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