WordPressで特定のページ(固定ページや投稿)に手動でベーシック認証を掛ける方法。
1、functions.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);
}
2、header.phpにコードを追加(一番上に記述)
"12345"
);
basic_auth($userArray);
endif;
endif;
?>
今回は固定ページ(IDが11)にのみ設定。if(is_page(’11’)): を if(get_post_type() === ‘カスタム投稿タイプ’): にすると特定のカスタム投稿に設定可能。
ページの条件分岐については条件分岐タグ|WordPress Codex 日本語版
3、ユーザー名とパスワードを設定
上記の “admin” => “12345” に “任意のユーザーID” => “任意のパスワード” を設定
4、正常に動作しているか確認
もし、正しいユーザー名とパスワードを入力しても認証できない場合は .htaccess を以下のように書き換えてみる(追加してみる)
# BEGIN WordPress
IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) – [E=HTTP_AUTHORIZATION:%1]
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress