過去に管理画面のログインURL(wp-login.php)にBasic認証を設定する方法のページなどでもWordPressでベーシックに認証を使う方法を紹介させていただきましたが、
今回は、特定のカスタム投稿ページに対してベーシック認証をかける方法のご紹介です。
functions.phpの編集
テーマ内の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 6 7 8 9 | <?php if(!is_home()):  	if(is_post_type_archive('カスタム投稿タイプ') || is_singular('カスタム投稿タイプ')):  		$userArray = array("userid" => "password" 		); 		basic_auth($userArray);  	endif; endif; ?> | 
if(is_post_type_archive(‘カスタム投稿タイプ’) || is_singular(‘カスタム投稿タイプ’)):でベーシック認証を掛けたい投稿タイプを指定します。
$userArray = array(“userid” => “password”で、ベーシック認証のユーザーIDをパスワードを指定します。
PHPがセーフモードの場合.htaccessを編集
PHPがセーフモードの場合はベーシック認証が通らないので、WordPressでパーマリンクを更新した際に生成される.htaccessファイルに以下の記述を追加します。| 1 2 3 | RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.*)  RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]  | 
参考ページ
WordPress内の特定カテゴリにBasic認証をかけるPHPがセーフモードの場合、BASIC認証できるようにする

 
  
  
  
  

コメント