特定のカテゴリのみBASIC認証をかける
参考はこちら→https://smileworks.biz/tips/wp_php/2448
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に表示実行部を追記
<?php if(!is_home()): if(is_category('1') || in_category('1') || is_page('2')): $userArray = array("AAAA" => "XXXX" ); basic_auth($userArray); endif; endif; ?>
3.何度もログイン表示が出るようであれば、.htaccessに追記
RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
ちなみに実装時はis_categoryが「カテゴリページ」だと気づかず、カテゴリに属する記事と勘違いした為、迷走しました。
カテゴリに属する記事の場合はin_category、覚えた。