WebページにIDとパスワードを設定するBasic認証は、通常「.htaccess」と「.htpasswd」の2つのファイルを使って設定します。
しかし、その方法はWordPressの固定ページでは使えません。
この記事では、WordPressの特定の固定ページに対して、テーマファイルを編集する方法で、Basic認証によるアクセス制限をかける方法を解説します。
目次
WordPressの特定のページにBasic認証をかける手順
WordPressの特定のページにBasic認証を書ける手順は以下の通りです。
- functions.phpにコードを追加する
- header.phpにコードを追加する
- 認証に使うIDとパスワードを設定する
順番に見ていきましょう。
functions.phpにコードを追加する
functions.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);
}
よくわからないと思いますが、これをそのままfunctions.phpに追加すればOKです。
header.phpにコードを追加する
header.phpに次のコードを追加します。
<?php
if(!is_home()):
if(is_page('1111')) :
$userArray = array(
"admin" => "password"
);
basic_auth($userArray);
endif;
endif;
?>
ここで、is_page()関数の引数の数字に、固定ページのIDを入力します。
上のコードでは「1111」となっている部分です。
固定ページのIDの調べ方
固定ページのIDを調べるには、WordPress管理画面の固定ページを開きます。
IDを調べたい固定ページのタイトルにマスウカーソルを持ってきます。
ブラウザのステータスバーに固定ページの投稿を表示させるリンクが表示されます。
このURLの文字列の「post=XXX」の「XXX」の部分がその固定ページのIDです。上の画像の例では「91」の箇所です。
使用しているテーマによっては、固定ページ一覧のカラムに「ID」が表示されているかもしれません。その場合は表示されている数値をそのまま使うと良いでしょう。
認証に使うIDとパスワードを設定する
最後に認証に使うIDとパスワードを設定します。
さきほど編集した「header.php」内の
“admin” => “password”
の部分が、IDとパスワードの組み合わせに対応しています。
動作確認してみよう
ここまで出来たら、さっそく動作確認してみましょう。Basic認証を設定した固定ページにブラウザでアクセスします。
このような「ユーザー名」と「パスワード」を入力する画面が表示されていたらBasic認証の設定が成功しています。