こんにちは sohnishi です。
今回はWordPressで固定ページなどにベーシック認証をかける簡単な方法をご紹介します。
まずはfunctions.phpに下記を記載
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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を読み込んでいないので、固定ページに直接記載しました。
1 2 3 4 5 |
<?php// ベーシック認証 if(is_page() == 'kotei_page_slug'): $userArray = array("admin" => "pass"); basic_auth($userArray); endif; |
これでひとまずは完了です。
ただ、環境によってはベーシック認証に正しいIDPASSを何度入力しても認証してくれない事象が起きます。
その場合は、wordpressが生成している.htaccessに以下を記載することで解決します。
1 2 |
RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] |
それでは、wordpressでベーシック認証をかける方法とハマりポイントのご紹介でした〜