WordPress 固定ページにベーシック認証を設定する方法
公開日
by
WordPress で特定の固定ページにベーシック(BASIC)認証を設定する方法を紹介します。
例えば、会員向けの特典ページなどで、IDパスワードを知っている特定のユーザーに見せたいページを作る時に便利な方法です。
ここで紹介する方法は、固定ページにベーシック認証を設定することを前提に説明しています。
コードを二箇所に追加
特定のページにベーシック認証を設定するには、コードを function.php
と header.php
の二箇所に追加するだけで実装が可能です。
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);
}
直接本番環境で実装する場合は、コード追加後にページが正しく表示されているかをご確認ください。
※function.php
にコードを追加した段階ではまだ何も起こりません。
header.php にコードを追加
続いて header.php
の1行目に次のコードを追加します。
コード追加時 is_page
に対象となるページのIDまたはページスラッグを指定してください。
サンプルコードでは、ベーシック認証の「IDとパスワード」に「ID : admin」「パスワード : 4649」を指定しています。
<?php // 特定ページにベーシック認証を設定
if(!is_home()){ // ブログ投稿インデックスページ以外
if(is_page('xxxxx')){ // ベーシック認証の対象ページのページIDまたはページスラッグを指定
$userArray = array(
"admin" => "4649" // ID と パスワード を指定
);
basic_auth($userArray);
}
}
?>
is_page
の xxxxx
部分は、任意のページの「ページID」または「スラッグ」を指定してください。
例えば、 https://www.example.com/product と言うページであれば、指定するスラッグは「product」となります。ページIDを指定する場合は、管理画面からページIDを確認してください。
ベーシック認証のIDとパスワードも同様に、任意ものに変更してください。
※ページIDとベーシック認証のIDは混同しないようにご注意ください。
コード編集後に対象ページへアクセス。ベーシック認証が適用されているのをご確認ください。
まとめ
WordPress で特定の固定ページにベーシック(BASIC)認証を設定する方法を紹介しました。