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
これは、私がadministratorとeditorsにアクセスしたくないがmediaにはならないからです。
誰か助けてもらえますか?
ありがとうジョシュ
いくらか掘り下げて学んだことで、私はさまざまな助けを組み合わせてこれら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');
私はあなたがコードをいじることなくこれを行うことを可能にする簡単なプラグインを作成しました。障害のあるユーザーに表示されるメッセージもフィルタリング可能です。
管理者と編集者が共有する機能のチェックを追加します。
add_action( 'get_header', 'wpse81659_maintenance' );
function wpse81659_maintenance() {
if ( ! current_user_can( 'publish_pages' ) || ! is_user_logged_in() )
die( 'Site undergoing maintenance' );
}