WordPress

WordPressで特定の固定ページなどにBasic認証をかける方法

ホームページにBasic認証をかけるには、「.htaccess」と「.htpasswd」を準備してサーバーにアップロードするのが一般的です。ただそのやり方だと、WordPressの特定の固定ページなどにアクセス制限の範囲をしぼってBasic認証をかけることはできません。

そこでPHPの認証機能を使って、ピンポイントでBasic認証をかける方法を紹介します。

まず、WordPressのテーマファイルにある、「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などに以下のようにコードを追加します。

<?php
if(!is_home()):
if(is_category('secret')) : //Basic認証を掛けたいカテゴリを指定
$userArray = array(
  "admin" => "password"
);
basic_auth($userArray);
endif;
endif;
?>

このようにheader.phpの一番上部に上のコードを書きます。
今回の例では条件文に「secretというスラッグをもつカテゴリー」を指定します。
このようにすることで「secret」カテゴリーのアーカイブページのみBasic認証でパスワード保護できるようになります。ここらへんの詳しい使い方は以下のサイトを参考にしてください。

ABOUT ME
アバター
ドレッド
目標必達のために鬼努力を惜しまない個人事業主。フリーライターとWeb制作のお仕事をしています。立命館大学中退。放送大学教養学部の全科履修生。中小企業診断士とFP1級を目指してハードに勉強中。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA