特定のページにBasic認証をかける(WordPress編)

WordPressでBasic認証をかける方法は、通常のHTMLとは異なります。
プラグインやサーバの設定で認証をかけることも可能ですが、ここでは手動でかける方法をご紹介します。

1.基本の設定① function.phpの設定

まず、function.phpに以下のコードを追加します。
とくに変更いりません。そのままコピペしてください。
(function.phpはWordpressの基本の設定なので、崩れるとWordpress自体が起動しなくなってしまいます。
バックアップを取っておくなどして、くれぐれもご注意ください)

/*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);
}

 

2.基本の設定② header.phpの設定

次にheader.phpの設定をします。
header.phpはWordpressの共通のヘッダー部分の設定するファイルです。

①headerにコードを追加する

header.phpの一番上に以下のコードを追加します。(一番上以外の場所だとbasic認証がかかりません)
こちらも、ひとまずそのままコピペしてください。

<?php
if(!is_home()):
if(is_page(‘1’)):
$userArray = array(
“admin” => “12345”
);
basic_auth($userArray);
endif;
endif;
?>

 

②ページの設定

3行目(赤字部分)

if(is_page(‘1‘)):

この部分がページIDを設定する部分になります。
’1’の部分にWordpressのページIDを入れます。

ページIDがわからない場合は、該当ページのbodyタグの中に書かれています。
投稿ページの場合は、postid-[ID番号]
固定ページの場合は、page-id-[ID番号]
IDナンバーと書かれている部分がページIDです。

③IDとパスワードの設定

4~6行目(緑字部分)

$userArray = array(
admin” => “12345
);

この部分が、IDとパスワードの設定部分です。
上記では”admin“がID、”12345“がパスワードになります。
”   “の内側にお好きなIDとパスワードを入力してください。

以上が基本の設置方法です。

 

3.複数のID・PWを設定する場合

複数のIDとパスワードを設置したい場合は、
4~6行目の設定を増やします。

$userArray = array(
admin” => “12345“,
ID1” => “67890“,
ID2” => “abcde
);

このように行を増やしていきます。
途中の行の区切り目には”,”(カンマ)を入れるのを忘れずに。(最後の行はカンマを入れないでください)

 

4.複数のページ、特定の条件に設置する場合

複数のページに設置する場合は、
3行目if(is_page(‘1’)):の部分を変更します。

①複数投稿ページ

投稿ページの場合は、3行目を

if(is_single(‘ID’)):

に書き換えます。

複数ページの場合は

if(is_single(‘ID’,’ID’,’ID’)):

となります。

②複数固定ページ

固定ページの場合は、最初の例と同じ表記で構いません。

if(is_page(‘ID’)):

複数ページの場合は、

if(is_page(‘ID’,’ID’,’ID’)):

となります。

③特定のカテゴリ

特定のカテゴリの場合は、3行目を

if(is_category(‘ID’)):

に書き換えます。

複数カテゴリの場合は、

if(is_category(‘ID’,’ID’,’ID’)):

となります。

④特定のタグ

特定のタグの場合は、3行目を

if(is_tag(‘ID’)):

に書き換えます。

複数カテゴリの場合は、

if(is_tag(‘ID’,’ID’,’ID’)):

となります。

 

⑤特定のカスタム投稿タイプ

特定のカスタム投稿タイプの場合は、3行目を

if(get_post_type() === ‘type’):

に書き換えます。
“type”にカスタム投稿タイプ名を入れます。

特定のページにBasic認証をかける(WordPress編)” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です