WordPressのカスタマイズ方法やプラグインレビューを中心に、パソコン/動物/植物のことなどを紹介するホームページです

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

公開日: 使い方など

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

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

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

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

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

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

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

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

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

がありますが、もうこれ以上プラグインを増やしたくないという人も多いと思いますので、ここではテーマの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 );
	}
}
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. コードは合っているはずなのに更新できないときは
  6. 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、Wordpressのエディタチェックではこれを「'」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
  7. 「何かが間違っています...」と表示され、更新できないときは
  8. このエラーは本当に何がエラーなのかをWordpressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
    ※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
これらのエラー対処については以下のページが参考になるかも知れません

コードを転載する場合には

ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします

許可される権限を限定するための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();
	}
}
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. コードは合っているはずなのに更新できないときは
  6. 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、Wordpressのエディタチェックではこれを「'」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
  7. 「何かが間違っています...」と表示され、更新できないときは
  8. このエラーは本当に何がエラーなのかをWordpressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
    ※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
これらのエラー対処については以下のページが参考になるかも知れません

コードを転載する場合には

ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします

許可される権限を限定するための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. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. コードは合っているはずなのに更新できないときは
  6. 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、Wordpressのエディタチェックではこれを「'」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
  7. 「何かが間違っています...」と表示され、更新できないときは
  8. このエラーは本当に何がエラーなのかをWordpressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
    ※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
これらのエラー対処については以下のページが参考になるかも知れません

コードを転載する場合には

ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします

許可される権限を限定するための権限名

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

  1. 管理者
  2. admimistrator

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

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

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

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

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

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

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

Wordpress関連の本

いちばんやさしいWordPressの教本 第4版 5.x対応 人気講師が教 える本格Webサイトの作り方 (「いちばんやさしい教本」シリーズ)
インプレス
大きな画面の操作手順で迷わない。人気のテーマで、パソコン&スマホ両対応のWebサイトを作れる!ソーシャルメディアとの連携やSEO対策、バックアップなどの運用面も丁寧に解説。
※表示している価格は単行本のものです
参考価格:1,738
※参考価格です。サービスやショップ、掲載時期などにより価格は異なりますのでご注意ください
できるWordPress WordPress Ver. 5.x対応 本格ホームページが簡単に作れる本 できるシリーズ
インプレス
WordPressは無料かつ高機能で、シェア率No.1のCMS(コンテンツ管理システム)です。その拡張性の高さから企業のホームページ制作にも利用されているほどで、ホームページで情報発信をするに当たって、個人でも本気度の高い方はWordPressを利用していることが多いです。本書はそんなWordPressの初期設定から制作、カスタマイズ、運用のノウハウまで幅広く学べる1冊です。
※表示している価格は単行本のものです
参考価格:1,628
※参考価格です。サービスやショップ、掲載時期などにより価格は異なりますのでご注意ください

  • ☆最後までお読みいただきありがとうございました。記事作者のひまあーとです。
    ☆Wordpressでサイトをカスタマイズしていく上で有用な情報を配信しつつ、「ココナラ」でサイトカスタマイズのお手伝い、不具合の修復、サイト引っ越し代行などをさせていただいております。
    ☆Wordpressネタが多いですが、趣味の「園芸」「卓球」などの情報や日々の出来事などもどんどん増やしていきますのでよろしくお願いいたします。

QR Code

このページはモバイル端末でもご覧いただけます

左のQRコードを読み取っていただくと、このページのURLが表示され、簡単にアクセスできます。ぜひモバイル端末でもご覧ください。

WordPressのカスタマイズ・不具合対応などご相談ください

Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。

【スポンサーリンク】