どうも。
これもたまにあるやつです。
特定の人にだけ見せたいページがある場合は有効かと。
ユーザーを作ってログイン機能を追加するのも一つの手段ではありますが、ユーザーを作るとダッシュボード内に入られる可能性も出てくるので、(権限によって制限する方法もあります)Basic認証が有効な時もあります。
単純にログインページとか作らなくていいというのも簡単でいいですよね。
ただログインページとは違って、閲覧者によって内容を変えたりすることはできないのでご注意を。
functions.phpに記述して特定のページにだけBasic認証をかける方法
さっそく結論となるコードを。
add_action('template_redirect', 'custom_basic_auth');
function custom_basic_auth() {
if ( is_post_type_archive('your_post_type') || is_singular('your_post_type') ) {
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Private Page"');
header('HTTP/1.0 401 Unauthorized');
echo 'このページを表示するには認証が必要です';
exit;
} else {
if ($_SERVER['PHP_AUTH_USER'] != 'ユーザー名' || $_SERVER['PHP_AUTH_PW'] != 'パスワード') {
header('HTTP/1.0 401 Unauthorized');
echo '認証に失敗しました';
exit;
}
}
}
}
3行目の if ( is_post_type_archive(‘your_post_type’) || is_singular(‘your_post_type’) ) この記述でBasic認証をかけたいページを設定。
「ユーザー名」「パスワード」の部分を変更すれば、あとはそのままで良いかと。
functions.phpの変更後はパーマリンクの更新もお忘れなく。
ではまた。