WordPressでベーシック認証をかけたい場合、サーバー側で設定する、プラグインを使う、.htaccessで設定するといった方法がありますが、今回はWordPressサイトで特定のページにのみベーシック認証をかけ、そのログイン情報をWordPressの管理画面上で設定できるようにする方法を紹介します。
特定ページにベーシック認証をかける
まず、functions.phpに以下のコードを記述してください。
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に以下のコードを記述します。
if (is_page(‘member-page’)) {
$userArray = array(‘admin’ => ‘password’);
basic_auth($userArray);
}
?>
※全角スペースが含まれているため、コピペで使用する際はご注意ください。
「member-page」というスラッグの固定ページの場合にベーシック認証がかかり、「admin」と「password」を入力すればそのページを閲覧できます。
管理画面上でログイン情報を変更できるようにする
ベーシック認証のログイン情報をWordPressの管理画面上で設定できるようにするにはカスタムフィールドを使い、カスタムフィールドに入力された値がログイン情報に設定されるようにします。
カスタムフィールドの詳しい説明は省略しますが、「Advanced custom fields」や「Smart Custom Field」などのプラグインを使えば簡単に実装できます。
ベーシック認証をかける固定ページにカスタムフィールドで2つの入力欄を設け、header.phpに記述した先ほどのコードを以下のように変更します。
$basic_id = post_custom(‘basic_id’);
$basic_password = post_custom(‘basic_password’);
if (is_page(‘photogallery’)) {
$userArray = array($basic_id => $basic_password);
basic_auth($userArray);
}
?>
※全角スペースが含まれているため、コピペで使用する際はご注意ください。
これで「$basic_id」と「$basic_password」をベーシック認証のログイン情報に設定することができたので、管理画面上で変更したら動的に変更されます。
関連記事
カスタムフィールドを作れるプラグイン「Advanced Custom Fields」【WordPress】
「Smart Custom Fields」でカスタムフィールドを作成する方法【WordPress】
WordPressを始めるならエックスサーバーがおすすめ
WordPressでブログやアフィリエイトを始めたい、良いレンタルサーバーに乗り換えたいという方にはエックスサーバーがおすすめです。
その理由は以下の通り。
- 国内シェアNo.1のレンタルサーバー
- サポートの品質が高い
- 表示速度・処理速度が速い
WordPressが学べるおすすめのスクール
WordPress関連の本もありますし、ネット上にはたくさんの情報がありますが、短期間でWordPressも含めたWeb制作のスキルを身につけたい方にはプログラミングスクールがおすすめです。
TechAcademy
- WordPressのサイト制作の流れが理解できる
- WordPressでオリジナルサイトが作れるようになる
- プラグインやカスタムフィールドを学べる
- オンラインで完結
- 講師・メンターが現役エンジニア
Leave a Comment