WordPress内の特定のページにBasic認証をかける方法

みなさん、こんにちは。
WordPressで制作されたサイトで特定のページや特定のカスタム投稿内だけにBasic認証をかけなければならない案件があり方法を調べたのでご紹介します。
Contents
Basic認証のかけ方
普段であれば「.htaccess」と「.htpasswd」でBasic認証をかけるわけですが、phpを使ってBasic認証をかけます。
function.phpにBasic認証をかけるための関数を追加
「function.php」に下記コードをコピペします。
function basic_auth($auth_list,$realm="Restricted Area",$failed_text="認証に失敗しました"){ if (isset($_SERVER['PHP_AUTH_USER']) and isset($auth_list[$_SERVER['PHP_AUTH_USER']])){ if ($auth_list[$_SERVER['PHP_AUTH_USER']] == $_SERVER['PHP_AUTH_PW']){ return $_SERVER['PHP_AUTH_USER']; } } header('WWW-Authenticate: Basic realm="'.$realm.'"'); header('HTTP/1.0 401 Unauthorized'); header('Content-type: text/html; charset='.mb_internal_encoding()); die($failed_text); }
Basic認証をかけるページを指定する
「header.php」の一番上に以下のコードをコピペします。
「header.php」を読み込んでいない場合は一番上で読み込んでいるファイルに記述してください。
<?php if(is_page() == 'secret'): $userArray = array("admin" => "password"); basic_auth($userArray); endif; ?>
条件分岐を使い先ほど「function.php」に追加した関数を呼び出しています。
この場合は固定ページの「secret」というスラッグ名を持つページにアクセスするとユーザー名とパスワードを聞かれるようになります。
また、ユーザー名は「admin」でパスワードは「password」になります。
ユーザー名とパスワードは下記コード部分を変更することで変更可能です。
$userArray = array("admin" => "password");
また、以下のようにすることでユーザー名とパスワードを増やすことができます。
$userArray = array( "admin1" => "password1", "admin2" => "password2" );
まとめ
以前にも特定のユーザーだけが見れるページを制作したことがあったのですが、その時はユーザー管理系のプラグインを入れてWordPressのアカウントを発行、WordPressにログインすると見れるようになるという仕様で作ったことがありました。
単純な作りならこっちの方が断然楽に作れますね。
あと、コーポレートサイト内に非公開の制作実績を掲載したい時なんかにも使えるかもしれませんね!
参考サイト

この記事が気に入ったらいいね!で
最新記事をお届けします