WordPressのサイトで、特定のページにBasic認証を設定する方法をご紹介します。
特定の固定ページ・投稿・カスタム投稿・カテゴリ・タグなどにBasic認証を設定したい方向けです。
プラグインではなく、コードを少し追加する方法になります。
ちなみに、手っ取り早くサイト全体にBasic認証を設定したい場合は下記の記事で紹介している「HTTPS Auth」というプラグインを使う方法がおすすめです。
※HTTPS Authは、サイト全体か、ログイン画面と管理画面のみにBasic認証を設定するプラグインです。
特定のページだけにBasic認証を設定する方法
functions.phpに追記する
はじめに、functions.phpを開いて下記のコードを追記します。
//Basic認証を設定
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に追記する
次に、header.phpを開いて、一番上に下記のコードを追記します。
<?php
if(!is_home()):
「ここで設定したいページを定義」
$userArray = array(
"任意のID" => "任意のパスワード"
);
basic_auth($userArray);
endif;
endif;
?>
任意のID には、設定したいIDを入れます。
任意のパスワード には、設定したいパスワードを入れます。
3行目の「ここで設定したいページを定義」の部分でページを定義するのですが、ページの種類別に書き方を詳しく説明していきます。
特定の固定ページにBasic認証を設定する場合
3行目を下記のように記述します。
<?php
if(!is_home()):
if(is_page('ページID')):
$userArray = array(
"任意のID" => "任意のパスワード"
);
basic_auth($userArray);
endif;
endif;
?>
ページIDのところに設定したいページのページIDを入れてください。
特定の投稿ページにBasic認証を設定する場合
<?php
if(!is_home()):
if(is_single('投稿ID')):
$userArray = array(
"任意のID" => "任意のパスワード"
);
basic_auth($userArray);
endif;
endif;
?>
3行目を上記のように記述し、投稿IDのところに設定したい投稿の投稿IDを入れてください。
特定のカスタム投稿にBasic認証を設定する場合
<?php
if(!is_home()):
if(get_post_type() === 'カスタム投稿名'):
$userArray = array(
"任意のID" => "任意のパスワード"
);
basic_auth($userArray);
endif;
endif;
?>
3行目を上記のように記述し、カスタム投稿名のところに、設定したいカスタム投稿のスラッグ名を入れてください。
特定のカテゴリーページorタグページにBasic認証を設定する場合
特定のカテゴリーやタグのページを設定したい場合は下記のように記述します。
カテゴリーページ
<?php
if(!is_home()):
if(is_category('カテゴリーID')):
$userArray = array(
"任意のID" => "任意のパスワード"
);
basic_auth($userArray);
endif;
endif;
?>
タグページ
<?php
if(!is_home()):
if(is_tag('タグID')):
$userArray = array(
"任意のID" => "任意のパスワード"
);
basic_auth($userArray);
endif;
endif;
?>
こちらも3行目のカテゴリーID、タグIDのところに設定したいIDを入れてください。
複数のぺージに設定する場合
複数ぺージがある場合は配列を使い、3行目を下記のように記述します。
設定したいページ分、カンマで区切って記述してください。
※一番最後はカンマは付けません。
<?php
if(!is_home()):
if(is_page(array('ページID', 'ページID', 'ページID'))):
$userArray = array(
"任意のID" => "任意のパスワード"
);
basic_auth($userArray);
endif;
endif;
?>
こちらは固定ページの記述例なので、
投稿ページの場合は、is_pageの部分をis_singleに、
カテゴリーページの場合は、is_pageの部分をis_categoryに変更すればOKです。
最後に設定できているか確認する
ファイルを保存後、Basic認証がちゃんと設定されているか確認します。
実際にサイトにアクセスし、設定したページを表示してみてください。
ユーザー名とパスワードの入力画面が現れるので、設定したID・パスワードを入力してください。
入力後、ページが開ければ正しく設定されていることが確認できます。
今回は、コードを追記して特定のページにBasic認証を設定する方法をご紹介しました。
参考になれば嬉しいです。