暂时禁用用户角色登录并替换为消息

时间:2013-01-15 作者:Joshc

有没有一种简单的方法可以暂时停止用户角色使用wordpress登录?

例如,如果我有一个名为media, 如何阻止他们登录?

我想在网站上显示自定义消息,例如“正在维护的网站”

看起来是这样的:

http://i.imgur.com/nDf7a.jpg

之所以这样,是因为我的网站完全被锁定,从公众使用此功能。。。

// 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;
    }
}
但是我需要做一些维护,我正在寻找一种简单的方法来锁定所有用户media.

这是因为我不想administratorseditors 仍然可以访问,但不能media.

3 个回复
最合适的回答,由SO网友:Joshc 整理而成

通过一些挖掘和学习,我成功地结合了各种帮助并创建了这两个功能。。。

// 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\');

SO网友:diggy

添加对管理员和编辑器共享的功能的检查:

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

SO网友:p.voinov
add_filter( \'authenticate\', \'restrict_media_role_authenticate\', 99 );
function restrict_media_role_authenticate( $user, $username, $password ){
    if ( in_array( \'media\', (array) $user->roles ) ) {
        return new WP_Error( \'denied\', "Site undergoing maintenance." );
    }
    return $user;
}
结束

相关推荐