サイト内の特定のページやディレクトリにBasic認証をかける場合、.htaccessを使って実装するのが一般的です。
しかし、WordPressのページにはディレクトリという概念がないため、特定のページにだけ認証をかけるということができません(サイト全体は可能)。
今回はWordPressで特定の固定ページやカテゴリーにBasic認証をかける方法について解説します。
固定ページにBasic認証をかける場合
実装自体はそれほど難しくありませんので、順を追って説明します。
function.phpに記述
まずは、function.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);
}
header.phpに記述
続いて、header.phpに下記の記述をします。
<?php
if(!is_home()):
if(is_page('1,2,3')): //Basic認証をかけたいページのID
$userArray = array(
"admin" => "password"
);
basic_auth($userArray);
endif;
endif;
?>
「admin」「password」の部分は、Basic認証のダイアログで入力する「ユーザー名」と「パスワード」を入力。これだけでOKです。
「ユーザー名」と「パスワード」は、増やすことも可能です。
$userArray = array(
"admin1" => "password1",
"admin2" => "password2",
);
カテゴリーページにBasic認証をかける場合
カテゴリーページにBasic認証をかけたい場合は、is_pageをis_categoryに変えてIDを指定します。
<?php
if(!is_home()):
if(is_category('1')) : //Basic認証をかけたいカテゴリIDを指定
$userArray = array(
"admin" => "password"
);
basic_auth($userArray);
endif;
endif;
?>
カスタム投稿タイプのページにBasic認証をかける場合
カスタム投稿タイプのページにBasic認証をかけたい場合は、get_post_typeを使って投稿タイプ名を指定します。
<?php
if(!is_home()):
if(get_post_type() === 'event'): //Basic認証をかけたい投稿タイプ名
$userArray = array(
"admin" => "password"
);
basic_auth($userArray);
endif;
endif;
?>
参考サイト:カテゴリーページや固定ページ等でBasic認証を利用する
Related Posts