スポンサーリンク
ホームページにBasic認証をかけるには、「.htaccess」と「.htpasswd」を準備してサーバーにアップロードするのが一般的です。ただそのやり方だと、WordPressの特定の固定ページなどにアクセス制限の範囲をしぼってBasic認証をかけることはできません。
そこでPHPの認証機能を使って、ピンポイントでBasic認証をかける方法を紹介します。
まず、WordPressのテーマファイルにある、「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);
}
それから、header.phpなどに以下のようにコードを追加します。
<?php
if(!is_home()):
if(is_category('secret')) : //Basic認証を掛けたいカテゴリを指定
$userArray = array(
"admin" => "password"
);
basic_auth($userArray);
endif;
endif;
?>
このようにheader.phpの一番上部に上のコードを書きます。
今回の例では条件文に「secretというスラッグをもつカテゴリー」を指定します。
このようにすることで「secret」カテゴリーのアーカイブページのみBasic認証でパスワード保護できるようになります。ここらへんの詳しい使い方は以下のサイトを参考にしてください。
スポンサーリンク
スポンサーリンク