最近はすっかりWordPressを使ってホームページを作る機会が増えてきましたが、まだまだ謎な部分というか、苦手な部分が多くあるので、お客さんから「こんなんしたい。」という要望が来ると、ドキドキしてしまいます。
でも、そういう要望が自分の技術を高めてくれるんだ!と前向きにとらえて、日々精進しています。
そんなある日お客さんから、「IDをパスワードを入力した人だけが見れる、資料をダウンロードできるページを作ってほしい。」という要望がありました。
要は、「BASIC認証をつけたページを作ってね。」という事なんですが、HTMLでホームページを作っていた時だったら「.htaccessを作ったらいけるな。」と思ったんですけど、「今回ワードプレスで果たしてそんなことが出来るのか?これはピンチじゃないのか?」という不安が頭の中を駆け巡りました。
とりあえず、プラグインで何かいい方法がないかな?と探し出したんですけど、どうもこれっていうものが見つからず、ネットで調べる事3時間。
ようやくこれは使えそうだ!という方法に巡り合えましたので、とりあえずここに書き記しておきます。
私のようなwordpress素人でも出来る方法なので、困った人はぜひ真似してください。
①functions.phpにコードを追加する
不具合が出てらどうしよ?と思うので、余り触りたくないfunctions.phpですが、ここは勇気をもって触ります。BASIC認証のためです!!
まずは下のコードをコピーして、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の一番下にペーストします。
②header.phpにコードを追加する
functions.phpだけでも触るのドキドキするのに、今度はheader.phpも触るだと!!
これは素人の私にとってはやんごとなきことですが、勇気をもってheader.phpを開きます。(当然事前にコピーはとっておきましょう。)
header.phpの一番上に以下のコードをペーストします。
header.phpにタグを追加する場所は、一番上なので間違えないように!
<?php
if(!is_home()):
if(is_page('★')):
$userArray = array(
"●●●●" => "◆◆◆◆"
);
basic_auth($userArray);
endif;
endif;
?>
ここまではコピペするだけなので、たぶん誰でもできると思います。
次に、BASIC認証を付けたいページを決めるのと、IDとパスワードを設定していきます。ここからは簡単です!
③WordPressで作ったページのページIDを調べる
どのページをBASIC認証の対象ページにするのかを決めないといけません。WordPressでは、固定ページやと投稿ページにIDというものが割り振られています。
ページID??そんなもんどこに書いてるんや??
と、初耳の人も安心してください。画面では見えませんが、コードを見ればちゃんと書かれています。
ページIDは<body>タグの中に、【postid-●●】というような感じで書かれていて、黒丸部分がIDの数字になります。
●投稿ページの場合は、postid-●●
●固定ページの場合は、page-id-●●
というような記述になっています。
④先ほどコピーしたタグの中の★にIDを入れる
header.phpの一番上にコピーしたタグの中にある、★の中にIDの数字を入れます。
例えば、IDが548だった場合は、以下の様にコピーします。
<?php
if(!is_home()):
if(is_page('548')):
$userArray = array(
"●●●●" => "◆◆◆◆"
);
basic_auth($userArray);
endif;
endif;
?>
簡単簡単!!あと少しで完成です!!!
⑤●●と◆◆にIDとパスワードを入力する
引き続き、header.phpの中にある、●●●●と◆◆◆◆に、IDとパスワードを入力します。例として作っていますので、4文字以上でも全然大丈夫です。
例えば、IDを【onakahetta】、パスワードを【gyozatabetai】にした場合は、以下の様に入力します。
<?php
if(!is_home()):
if(is_page('548')):
$userArray = array(
"onakahetta" => "gyozatabetai"
);
basic_auth($userArray);
endif;
endif;
?>
はい、これで保存して完成です!!!
どうでしょうか?無事指定したページにBASIC認証はかかりましたでしょうか??
phpのコードについては、私自身何が書かれているのか分かりませんので、問い合わせてもらっても答えることは出来ません!!すいません!!!
でも、この方法で初心者の私でも出来たので、きっと他の方も行けるんじゃないかなと思います!