web-dev-qa-db-fra.com

Désactiver temporairement la connexion au rôle d'utilisateur et le remplacer par un message

Existe-t-il un moyen simple d’empêcher temporairement un rôle d’utilisateur de se connecter avec wordpress?

Par exemple, si j'ai un rôle d'utilisateur appelé media , comment puis-je les empêcher de se connecter?

Je souhaite qu'un message personnalisé apparaisse sur le site, par exemple, "Site en cours de maintenance"

Donc, cela ressemble à ceci ... http://i.imgur.com/nDf7a.jpg

La raison en est que mon site Web est complètement verrouillé du public en utilisant cette fonction ...

// LOCK DOWN
add_action('get_header', 'wpq_member_only_site');
function wpq_member_only_site() {
    // logged in users or visits to a specified page are allowed
    if ( !is_user_logged_in() ) {

        $redirect_after_login = get_home_url();

        // the URL where login/registration takes place
        $login_url = wp_login_url( $redirect_after_login );

        // redirect visitors
        wp_redirect( $login_url, 302 );
        exit;
    }
}

Mais je dois faire quelques maintenences et je cherche un moyen simple de verrouiller tous les utilisateurs qui ont le rôle media

C'est parce que je ne veux pas administrateurs et éditeurs avoir encore accès, mais pas media .

Quelqu'un peut-il aider s'il vous plaît?

Merci josh

1
Joshc

En creusant et en apprenant, j'ai réussi à combiner diverses aides et à créer ces 2 fonctions ...

// MAINTAINANCE MODE
function site_maintenance() {
    if ( current_user_can('media') || current_user_can('genpo') ) {

       $logout_url = wp_login_url().'?mode=maintainance';
       wp_logout();
       wp_redirect( $logout_url, 302 );

    }     
}
add_action('get_header', 'site_maintenance');

// CUSTOM LOGIN MESSAGES
function my_login_message() {

    if( $_GET['mode'] == 'maintainance' ){
        $message = '<p class="message"><b>Site undergoing maintainance.</b></p>';
        return $message;
    }

}
add_filter('login_message', 'my_login_message');
3
Joshc

J'ai créé un simple plugin qui vous permettra de le faire sans perdre son temps avec le code. Le message affiché aux utilisateurs désactivés est également filtrable.

http://wordpress.org/plugins/disable-users/

2
jaredatch

Ajoutez une vérification de la capacité partagée par les administrateurs et les éditeurs:

add_action( 'get_header', 'wpse81659_maintenance' );
function wpse81659_maintenance() {
    if ( ! current_user_can( 'publish_pages' ) || ! is_user_logged_in() )
        die( 'Site undergoing maintenance' );
}
2
diggy