指定カテゴリの一覧とシングルページにベーシック認証がかかります。
編集するファイルは
header.php
function.php
そして、サーバーによっては
.htaccess
です。
header.php
header.phpの一番上に下記を追加します。
カテゴリーIDのところにベーシック認証をかけたいカテゴリのIDを入れてください。
<?php if(!is_home()): if(in_category('カテゴリID') ): $userArray = array("admin" => "password" ); basic_auth($userArray); endif; endif; ?>
※if(in_category(‘カテゴリID’) ):がif(is_category(‘カテゴリID’) ):になっているとシングルページにベーシック認証がかかりません。
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); }
.htaccess
phpがセーフモード(CGI版)で動作しているサーバーの場合は、phpでのBasic認証が行えないのでheader.phpとfunction.phpだけの編集だとはじかれてしまいます。
そのため下記をWordPress用の.htaccessに追加してください。
RewriteCond %{HTTP:Authorization} ^(.*) #追加 RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] #追加
入れる場所はこちらです。
# 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] </IfModule> # END WordPress
コメント