WordPress6.5 指定したページだけbasic認証をかける

WordPress6.5 指定したページだけbasic認証をかける

WordPress6.5で、Wordpress6.5 指定したページだけbasic認証をかける手順を記述してます。

環境

  • WordPress 6.5.4

修正箇所

「functions.php」の一番下にでも、以下の関数を追加します。

function basic_auth($auth_list,$realm="Restricted Area",$failed_text="Authentication failure"){
  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);
}

後は、basic認証をかけたいページのソースコードの一番上に、以下を追加するだけで可能です。

<?php
if(!is_home()):
    if(is_page('ページ番号' または 'スラッグ名' または 'タイトル')):
        $userArray = array(
            "ユーザー名" => "パスワード"
        );
        basic_auth($userArray);
    endif;
endif;
?>