wordpressの固定ページ等に、basic認証をかける方法。

2016.03.14

2016.03.14

ブログ用画像

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 WordPress

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]

 
# END WordPress
 

KEiSoN★

デジタルハリウッドオンラインスクールで、webデザインの基本を学ぶ。
2007年よりECカート開発会社にてwebディレクター/webデザイナーとして従事。マネージャー職も務める。
2009年1月よりフリーランスのwebディレクター/Webデザイナーとして独立。2015年11月にスカイゴールド株式会社として法人化。
中小企業向けのWebブランディング・デザイン、Wordpressのオリジナルテーマ開発が得意。
国内外の様々な価値観・クリエイティブに接触することで、幅広いクリエイティブや臨機応変にアイデアを提供する。