【WordPress】登録ユーザー(管理者以外)は、ダッシュボード(管理画面)へアクセスさせない方法

ワードプレスには、いくつかログインフォームやユーザ登録できるプラグインが存在します。

ただ、購読者など、「管理者以外」はダッシュボード(管理画面)へアクセスさせたくない場合があります。

1.プラグインの「設定」で出来る場合

「SimpleMembership」プラグインなんかは、「設定」から、ダッシュボードへのアクセスを無効にする項目が用意されているので、ご利用の方は確認してみてください。

 

2.コードを記述する場合

一方で、同じく有名なプラグイン「Theme My Login」の方はそういう項目が用意されていません。(以前はあったと思うんですが、いつしか無くなったようです)

そういう場合は、「functions.php」に下記コードを記述すればOKです。

 

// ▼ダッシュボードへのアクセス無効(ただし管理者は除く)
add_action( 'auth_redirect', 'subscriber_go_to_home' );
function subscriber_go_to_home( $user_id ) {
	$user = get_userdata( $user_id );
	if ( !$user->has_cap( 'edit_posts' ) ) {
		wp_redirect( get_home_url() );
		exit();
	}
}

// ▼ツールバー非表示
if(current_user_can('subscriber')){
    add_action( 'after_setup_theme', 'subscriber_hide_toolbar' );
}
function subscriber_hide_toolbar() {
    show_admin_bar( false );
}

記述見本はこちら

 

補足:基本的には「子テーマ」を使おう

functions.phpやスタイルシートの編集は、基本的に「子テーマ」を作って、そこに記述することをオススメします。

本テーマ(親テーマ)にそのまま記述すると、更新したときに、初期化されてしまうからです。

※その都度記述すればいい、という方は、それでもOKです。