wordpressの固定ページ等で、ページ毎に個別で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に固定ページのID指定をし、「”admin” => “password”」に、「ユーザー名」「パスワード」を設定し、アップすれば完了です。
"password" ); basic_auth($userArray); endif; endif; ?>
また、「ユーザー名」と「パスワード」は、下記のように増やすことも可能です。
$userArray = array( "suzuki" => "hanako", "satou" => "tarou", );
カテゴリーページにbasic認証をかける場合
"password" ); basic_auth($userArray); endif; endif; ?>
固定ページにbasic認証をかける場合
"password" ); basic_auth($userArray); endif; endif; ?>
カスタム投稿タイプのページにbasic認証をかける場合
"password" ); basic_auth($userArray); endif; endif; ?>
上記設定で、ID・PASSWORDが通らない場合
コードを間違いなく書いていてもbasic認証が通らない時は、.htaccessに下記の記述を追加する必要があります。
下記の2行を、wordpressが生成する.htaccessに追加します。
RewriteCond %{HTTP:Authorization} ^(.*) #追加 RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] #追加
下記のような記述の仕方になります。
# BEGIN WordPressRewriteEngine 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