概要
Webサイト全体にBasic認証かけるのは、確認用によくやることだと思います。
.htaccessとかでかけるのが常套手段。
ただ、全体ではなくページごとにかける/かけないを選択したい場合、こと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で認証をかける
※ファイルの一番上、html部分が始まるより前に!
<?php
$pageArray = array("ページIDの一覧");
if(is_page($pageArray)):
$userArray = array("Basic認証のID" => "Basic認証のパスワード");
basic_auth($userArray);
endif;
?>
ページIDは、WordPressの管理画面で固定ページを開いた時のURL
http://xxx.com/wp-admin/post.php?post=71
の、最後のpost=xxにある数字のことです。
まとめ
めっちゃ簡易的なBasic認証です。
確認用のBasic認証においては、まじで「とりあえず動けばおけ」なので、htaccessとかで認証かけるときとは認証失敗時の見た目は違うけど、動く。