WordPressで特定のページにBasic認証を設定する方法(プラグインなし)

WordPressで特定のページにBasic認証を設定する方法(プラグインなし)

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認証を設定する方法をご紹介しました。

参考になれば嬉しいです。

WORDPRESSカテゴリの最新記事