functions.phpでベーシック認証をかける方法|WordPress
ベーシック認証って、
.haccessに記述して.htpasswdファイルと用意して、
パスワードは暗号化してと意外にやることが多い。
「今はまだ見られたくない」など一時的だったり、
「重大ではないけど知ってる人にだけ見せたい」など簡易的な状況でしか使わないので、
もっと簡単にできないかなーと思っていたのですが、
functions.phpの記述でできるようです。
この方法であれば、
特定のページにのみベーシック認証をかけたい時にも使えます。
ベーシック認証のかけ方
01. 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の一番下(「?>」があればその上)にでも追記してください。
「認証に失敗~入力してください。」はIDやPASSを間違えたときに表示される文言です。
必要であれば、変更してください。
02. header.phpへ記述
▼ header.php
<?php
if(!is_home()):
if(is_page('work')):
$userArray = array("admin" => "password");
basic_auth($userArray);
endif;
endif;
?>
header.phpでどこのページに適用するかと、ID・PASSを設定します。
header.phpの一番上(1行目)に追記します。
どこのページに適用するか
3行目の「is_page(‘work’)」の部分です。
この場合だとworkというスラッグのページに適用されます。
ここの条件分岐タグを、ベーシック認証をかけたいページに合わせて変えてください。
条件分岐タグはこちらを参考にしてください。
条件分岐タグ – WordPress Codex 日本語版
ID・PASSの設定
4行目の「”admin” => “password”」の部分です。
adminを好きなIDに、passwordを好きなパスワードに変更してください。
複数設定したい場合は「,」で区切ってあげて必要なぶんだけ記述します。
$userArray = array(
"admin01" => "password01",
"admin02" => "password02"
);
これだけでベーシック認証は完了です。
「Advanced Custom Fields」と組み合わせて管理画面からID・PASSを変更できるように設定することも可能です。
WordPressの勉強するならこの一冊
私自身、この1冊から始めて今でもずっと見返す一冊です。