特定のカスタム投稿だけにBasic認証をかける方法
2020年11月24日
カスタム投稿だけにBasic認証をかける方法をご紹介。
例えば一部の人にだけ実績を公開したいときなどに使えます。
編集するファイルは下記2つ(場合により3つ)。
・function.php
・header.php
・.htaccess(PHPがセーフモードの時)
※作業前には必ずバックアップをとりましょう。
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を読んでいる場合は、そっちに記述します。
カスタム投稿タイプ名は、Basic認証をかけたいカスタム投稿名を記載してください。
“admin” => “password”ここで、ログインIDとパスワードを指定します。
if(!is_home()): if(get_post_type() === 'カスタム投稿タイプ名'):
$userArray = array("admin" => "password"); basic_auth($userArray); endif; endif;
.htaccessの記述(PHPがセーフモードの時)
PHPがセーフモードの際は、.htaccessファイルに下記記述を追加します。
RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
これで特定のカスタム投稿にBasic認証がかかります!
いじるファイルはWordpressの重要なファイルばかりなので、作業前にはバックアップを必ず取るようにしましょう!