web-dev-qa-db-ja.com

ユーザーロールのログインを一時的に無効としてメッセージに置き換えます

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

これは、私がadministratoreditorsにアクセスしたくないがmediaにはならないからです。

誰か助けてもらえますか?

ありがとうジョシュ

1
Joshc

いくらか掘り下げて学んだことで、私はさまざまな助けを組み合わせてこれら2つの機能を作成することができました。

// 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

私はあなたがコードをいじることなくこれを行うことを可能にする簡単なプラグインを作成しました。障害のあるユーザーに表示されるメッセージもフィルタリング可能です。

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

2
jaredatch

管理者と編集者が共有する機能のチェックを追加します。

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