• RSS

[WP]特定のカスタム投稿ページのみベーシック認証をかける方法

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

過去に、管理画面のログインURL(wp-login.php)にBasic認証を設定する方法 のページなどでもWordPress でベーシックに認証を使う方法を紹介させていただきましたが、

今回は、特定の「カスタム投稿ページ」に対してベーシック認証をかける方法のご紹介です。

functions.php の編集

テーマ内の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);
}

header.php の編集

テーマ内のheader.php を開き、ファイルの上部に以下の記述を追加します。
<?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 ファイルに、以下の記述を追加します。
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] 



  • このエントリーをはてなブックマークに追加
  • follow us in feedly

コメント

コメントを残す