WordPressでプラグインを使わずにバックエンド(管理画面)へのアクセスを禁止する方法

WordPressでサイトを作る際にぜひやってみたい機能の1つが「会員制(登録制)サイト」の構築。会員専用のフォーラム(掲示板)を設置したり、会員しか見れないコンテンツを作ったり、会員しかダウンロードできないコンテンツを作ったりといろいろできることが広がりますね。

WordPressの4.6未満のバージョンではユーザー登録するにあたってフロントエンド(閲覧画面)に設置した登録フォームからユーザー登録すれば、ユーザー名とパスワードの入ったメールが送信されて登録完了!となっていましたが、4.6以降は一度メールを送信してパスワード変更画面にアクセスしてもらって更新することで登録が完了する「ダブルオプトイン」方式になりました。

これによっていわゆる捨てメールアドレスや架空のメールアドレスによる登録がしにくくなった一方で、バックエンドのログイン画面(厳密にはパスワード変更画面)へアクセスする必要が出てきました。そしてパスワード変更後は管理者が使うログイン画面が表示され、ログインするとユーザー編集画面が開くようになっているため、管理画面(バックエンド)へユーザーが間違って行ってしまわないための措置が必要になります。

何も対策をしていない場合、登録したユーザーへいきなりユーザー編集画面が表示されたらびっくりするでしょうし、故意にバックエンドへ入られてしまうと不都合が生じることがありますから、特定の権限以外のユーザーは絶対にバックエンドを表示しないという工夫が必要です。

措置としてはフロントエンドですべての作業を行ってもらうのが基本ですから

  1. 表示する権限のないユーザーは管理バーを非表示にする
  2. 表示する権限のないユーザーが管理画面の各ページを直接URL入力しても開かないようにする
  3. 表示する権限のないユーザーはログイン後にトップページへ飛ばす

ということが必要となります。

内容を簡単に説明すると、権限のないユーザーがログインしたときに3でトップページへ飛ばし、管理画面へ行けるようになる1を行います。そして、Wordpressのファイル構造を理解している人がURLを直接入力しても管理画面その他へ行けないように2を設定します。

この機能を備えたプラグインとして

Wordpressで会員制サイトを作った際に間違って、または故意に管理画面を表示させないことができないか?というのを実装できるのが、今回紹介する【Remove Dashboard Access】プラグインです

がありますが、もうこれ以上プラグインを増やしたくないという人も多いと思いますので、ここではテーマのfunctions.phpへ追記するだけで、プラグインが行っている機能を包括できるコードを3つ紹介します。

※テーマのfunctions.phpは重要なファイルなので、編集に失敗したり他のプラグインとの競合などにより不具合が生じたりして、最悪の場合画面が真っ白になって管理画面にも入れないという状況になることもありますから、編集を行う前にコードのチェックをしてくれるようになったWordpressのバージョン4.9以降に更新してから行うことをおすすめします

※同様の機能のプラグインを探すときは、Wordpressのバージョン4.9に対応していることを確認した上で、導入後に必ずテストをすることをおすすめします

※当サイトでもこのコードを使っており正常に機能していますが、環境によっては動作しない場合や不具合が生じる場合もありますから、適用後はいろいろな権限で実際に登録や管理をしてみるなど必ずテストを行ってください。

スポンサーリンク

表示する権限のないユーザーは管理バーを非表示にするコードと設定例

/******* 表示する権限のないユーザーは管理バーを非表示にする *******/ 
add_action( 'after_setup_theme', 'subscriber_hide_admin_bar' );

function subscriber_hide_admin_bar() {

	$user = wp_get_current_user();

	if ( isset( $user->data ) && !$user->has_cap( '「Capabilityを設定」' ) ) {

		show_admin_bar( false );

	}

}
許可される権限を限定するためのCapability例

権限レベルを判断するための機能を設定するための例です。コード内の「Capabilityを設定」という文字列を変更することで、実際に有効になる権限レベルを設定することができます

  1. 管理者だけ有効にする
  2. ‘switch_themes’

  3. 編集者・管理者だけ有効にする
  4. ‘edit_others_posts’

  5. 投稿者・編集者・管理者だけ有効にする
  6. ‘publish_posts’

  7. 寄稿者・投稿者・編集者・管理者だけ有効にする
  8. ‘edit_post’

表示する権限のないユーザーが管理画面のページを直接URL入力しても開かないようにするコードと設定例

/******* 表示する権限のないユーザーが管理画面のページを直接URL入力しても開かないようにする *******/ 
add_action( 'auth_redirect', 'subscriber_go_to_home' );

function subscriber_go_to_home( $user_id ) {

	$user = get_userdata( $user_id );

	if ( !$user->has_cap( '「Capabilityを設定」' ) ) {

		wp_redirect( get_home_url() );

		exit();

	}

}
許可される権限を限定するためのCapability例

権限レベルを判断するための機能を設定するための例です。コード内の「Capabilityを設定」という文字列を変更することで、実際に有効になる権限レベルを設定することができます

  1. 管理者だけ有効にする
  2. ‘switch_themes’

  3. 編集者・管理者だけ有効にする
  4. ‘edit_others_posts’

  5. 投稿者・編集者・管理者だけ有効にする
  6. ‘publish_posts’

  7. 寄稿者・投稿者・編集者・管理者だけ有効にする
  8. ‘edit_post’

表示する権限のないユーザーはログイン後にトップページへ飛ばすためのコードと設定例

/******* 管理者権限以外はログイン後にトップページへ飛ばす *******/ 
add_action( 'admin_init', 'disable_admin_pages' );
function disable_admin_pages() {
	if(!current_user_can('「権限名を設定」')){
		$redirect_url = get_option('home');
		header("Location: ".$redirect_url);
		exit;
	}
}
許可される権限を限定するための権限名

権限レベルを判断するための機能を設定するための例です。コード内の「権限名を設定」という文字列を変更することで、実際に有効になる権限レベルを設定することができます

  1. 管理者
  2. admimistrator

  3. 編集者・管理者
  4. editor

  5. 投稿者・編集者・管理者
  6. author

  7. 寄稿者・投稿者・編集者・管理者
  8. contributor

参考にさせていただいたサイト

今回の記事は以下の2つのページを参考にさせていただき、簡単にカスタマイズできるように再編集させていただきました

例えば、WordPressでちょっとした会員向けサイトなんかを作ったとして、とりあえずメンバーにログインだけはしてもらいたいけど管理画面(wp-admin以下)はアクセスしてほしくないよーという場合、以下のコードを「functions

2018年1月20日「WordPress Popular Posts」の動作で不具合

このコードで実装したところ、私の環境では「WordPress Popular Posts」のアクセス数計測がストップしてしまいました。他のプラグインとの兼ね合いや環境などによるとは思いますが、「WordPress Popular Posts」だけに限らず導入後はチェックすることをおすすめします

Amazonの人気商品楽天市場の人気商品
いちばんやさしいWordPressの教本第3版 人気講師が教える本格Webサイトの作り方 (「いちばんやさしい教本」)

いちばんやさしいWordPressの教本第3版 人気講師が教える本格Webサイトの作り方 (「いちばんやさしい教本」)

  • 価   格:¥ 1,706
  • 販 売 者: Amazon.co.jp
  • 評   価:
  • 商品の概要:ASIN: 4295000795
    インプレス

本当によくわかるWordPressの教科書 はじめての人も、挫折した人も、本格サイトが必ず作れる

本当によくわかるWordPressの教科書 はじめての人も、挫折した人も、本格サイトが必ず作れる

  • 価   格:¥ 1,685
  • 販 売 者: Amazon.co.jp
  • 評   価:
  • 商品の概要:ASIN: 4797395168
    SBクリエイティブ

WordPressレッスンブック HTML5&CSS準拠

WordPressレッスンブック HTML5&CSS準拠

  • 価   格:¥ 3,024
  • 販 売 者: Amazon.co.jp
  • 評   価:
  • 商品の概要:ASIN: 4883379248
    ソシム

CS Shop
【中古】 いちばんやさしいWordPressの教本 WordPress4.x対応 第2版 人気講師が教える本格Webサイトの作り方 /石川栄和(著者),大串..

【中古】 いちばんやさしいWordPressの教本 WordPress4.x対応 第2版 人気講師が教える本格Webサイトの作り方 /石川栄和(著者),大串..

  • 価   格:1,098 円 (税込)
  • 販 売 者: ブックオフオンライン楽天市場店
  • 評   価:
  • 商品の概要:石川栄和(著者),大串肇(著者),星野邦敏(著者)販売会社/発売会社:インプレス/ 発売年月日:2014/11/14JAN:9784844337096
【中古】 本格ビジネスサイトを作りながら学ぶWordPressの教科書(2) スマートフォン対応サイト編 /プライム・ストラテジー【著】 【中..

【中古】 本格ビジネスサイトを作りながら学ぶWordPressの教科書(2) スマートフォン対応サイト編 /プライム・ストラテジー【著】 【中..

  • 価   格:822 円 (税込)
  • 販 売 者: ブックオフオンライン楽天市場店
  • 評   価:
  • 商品の概要:プライム・ストラテジー【著】販売会社/発売会社:ソフトバンククリエイティブ/ 発売年月日:2013/08/29JAN:9784797370966
無料ではじめるWindows Azure×WordPress超入門【電子書籍】[ 戸倉 彩 ]

無料ではじめるWindows Azure×WordPress超入門【電子書籍】[ 戸倉 彩 ]

  • 価   格:1,234 円 (税込) 送料込
  • 販 売 者: 楽天Kobo電子書籍ストア
  • 評   価:
  • 商品の概要:<p>※この電子書籍は固定型レイアウトです。リフロー型と異なりビューア機能が制限されます。 クラウドガール(msdn.microsoft.com/ja-jp/claudia)の主人公、クラウディア窓辺がキホンをやさしくレクチャーするクラウド技術とWebサイト構築の超入門書。「クラウドとはな..
楽天ウェブサービスセンター CS Shop
役に立つ情報でしたらぜひSNSやメールでシェアしてください
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

メニューを表示できません

ページ先頭へ