あべゴブログがgoogle newsで配信されることになりました!

フォローよろしくお願いします!

フォロー!

【wordpress】管理者以外をログインさせない方法【セキュリティ対策】

web
スポンサーリンク

皆さんこんばんわ!AbeGoblinです!

今回紹介するのは、弱いよわーいレベルでのお話ですが、一応セキュリティに関するところです。
アクセスに関するコードをご紹介できればと思います!!

wordpressのユーザレベルについて。

wordpressにはユーザーごとに与えられている権限があるんですね。
んで、それによってこのユーザーは固定ページの制作をできないようにしよう!とかこのユーザーは閲覧だけ!とかこの人は何でもできちゃうようにしようとかができるわけです。

一覧にするとこんな感じですね!めんどいんでコーデックスより引用させていただきます。

  • 特権管理者 – サイトネットワーク管理機能や他のすべての機能へアクセスできるユーザー。
  • 管理者 – シングルサイト内のすべての管理機能にアクセスできるユーザー
  • 編集者 – 他のユーザーの投稿を含むすべての投稿を発行、管理できるユーザー
  • 投稿者 – 自身の投稿を発行、管理できるユーザー
  • 寄稿者 – 自身の投稿を編集、管理できるが、発行はできないユーザー
  • 購読者 – プロファイル管理のみを実行できるユーザー

コーデックスより

はい、こんな感じです。特権管理者っていうのがあるんですけどもね、これはマルチサイト、つまり、waordpressの中に複数のワードプレスが追加されているサイトですね。その場合の最上位権限を持つものを指します。普通のHPやブログだと、最上位は管理者になります。まぁグループとかほんといろいろあるんですが、シングルサイト(普通のサイトとかのを指します。)の場合は管理者=特権管理者になるんですねー!
んで、その管理者(特権管理者)はサイト内すべての部分にアクセスできます。それ以外は微妙に制限がかかってしまうんですよね。

んで、今回ご紹介するコードはですね、タイトルにもある通り、この「管理者」以外が管理画面に入れないようにしてしまおうっていうものです。

勝手に管理者以下のユーザーを作成されて勝手に記事を書かれちゃったよ!!ってことはほとんどない事柄だとは思いますがね、備えあれば憂いなし!ってやつですね!

うん、あと今メンテナンス中だから管理者以外のアカウントを持っている人は問答無用で管理画面に入れたくない!ってときにも使えますね!!

じゃあ早速コード!

functions.php
add_action( 'admin_init', 'disable_admin_pages' );
  function disable_admin_pages() {
    if ( !current_user_can( 'add_users' ) ) {
      $redirect_url = esc_url( home_url( '/' ) );
    header( "Location: " . $redirect_url );
    exit;
  }
}

はいー!これこれー!これをズバッとばしっとfunctionsに仕込みましょう!!

ざっくり説明すると、current_user_can()ってのは現在のユーザーの権限を調べる関数で、この「add_users」っていうのは特権管理者を指します。んで先にも述べましたが、シングルサイトの場合、特権管理者は管理者と同等の権限を持ちます。マルチサイトの場合はそのまま特権管理者ですね!

んで、否定を意味する!がついているため、【もし(if)、特権管理者(管理者)じゃなかったら、トップページにリダイレクトする】っていうのが3行目から5行目までに書かれている感じですね!

5行目のheader( “Location: ” . $redirect_url );ってのはね、いわゆるヘッダーロケーションっていうやつです。ゴリゴリのphpですね!phpを勉強し始めの方に習うものです!本当はこう書きます!

header('Location: https://abegoblog.com/');
exit;

はい、この関数で大事なのはLocation:の後に必ず半角空白を入れなければいけないんですね!それ以外はもう簡単!URL乗っけるだけ!先に紹介したコードにもしっかり空白が含まれていますね!

んで.(カンマ)は接続の演算子なので、上のコードにある5行目のheader( “Location: ” . $redirect_url );は変数を解くとheader(‘Location: https://abegoblog.com/’);になります!

結構詳しく解説してしましましたが、これで簡単ですね!!

まとめ

はい!今日は結構気合を入れて書きました!まぁ最近おざなりになっていた部分もあるんでね、ここらでビシッとやってやろうと!そう思った次第でございます!

今回のコードは正直使いどころが限られるんですがね、別で紹介したヘッダーロケーションは条件分岐を使ったりする際に結構使う場面が出てきます。header.phpとかに書く機会が多いかな!覚えておきましょう!

はいそれでは今回はこの辺で終わりにしようと思います!それではー(^q^)ノシ