LoginSignup
2
3

More than 3 years have passed since last update.

WordPressでページごとにBasic認証をかける

Posted at

概要

Webサイト全体にBasic認証かけるのは、確認用によくやることだと思います。
.htaccessとかでかけるのが常套手段。
ただ、全体ではなくページごとにかける/かけないを選択したい場合、こと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で認証をかける

※ファイルの一番上、html部分が始まるより前に!

<?php
  $pageArray = array("ページIDの一覧");
  if(is_page($pageArray)):
    $userArray = array("Basic認証のID" => "Basic認証のパスワード");
    basic_auth($userArray);
  endif;
?>

ページIDは、WordPressの管理画面で固定ページを開いた時のURL
http://xxx.com/wp-admin/post.php?post=71
の、最後のpost=xxにある数字のことです。

まとめ

めっちゃ簡易的なBasic認証です。
確認用のBasic認証においては、まじで「とりあえず動けばおけ」なので、htaccessとかで認証かけるときとは認証失敗時の見た目は違うけど、動く。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3