WordPress サイト全体にBasic認証を設定する方法
公開日
by
WordPress サイト全体に Basic(ベーシック)認証を設定する方法を紹介します。
紹介する方法は、プラグインを使わずにテーマファイルを編集する方法です。
WordPress サイト全体に Basic 認証を設定
WordPress サイト全体に Basic 認証を設定するには、次のコードを function.php に追加してください。
/*【表示】WordPress サイト全体に Basic 認証を設定 */
function add_basic_auth() {
// REST API には適用しない
if ( defined('REST_REQUEST') && REST_REQUEST ) {
return;
}
// 設定するユーザー名とパスワード
$user = 'name'; // 任意の名前
$pass = 'password'; // 任意のパスワード
// ベーシック認証の表示メッセージ
$realm = 'Restricted Area'; // 表示メッセージ
// すでに認証情報が送信されているかチェック
if (
!isset($_SERVER['PHP_AUTH_USER']) ||
$_SERVER['PHP_AUTH_USER'] !== $user ||
$_SERVER['PHP_AUTH_PW'] !== $pass
) {
header('WWW-Authenticate: Basic realm="'.$realm.'"');
header('HTTP/1.0 401 Unauthorized');
echo '認証が必要です。';
exit;
}
}
// フロント側全体にかけたい場合は以下を有効化
add_action('template_redirect', 'add_basic_auth');
コードを追加後、サイトを更新して動作を確認してください。
範囲の条件を変える方法
Basic 認証を管理画面にも設定したい場合や、ログイン画面にだけ設定したい場合は次のように調整してください。
管理画面にもかけたい場合
紹介したコードの以下の部分を紹介するコードに差し替えてください。
// フロント側全体にかけたい場合は以下を有効化
add_action('template_redirect', 'add_basic_auth');
こちらを以下に差し替えてください。
// 管理画面にもかけたい場合は以下を有効化
add_action('admin_init', 'add_basic_auth');
すべて(フロント+管理画面+ログイン画面)にかけたい場合
次のコードに差し替えてください。
// 管理画面にもかけたい場合は以下を有効化
add_action('admin_init', 'add_basic_auth');
管理画面だけにかけたいなら
次のコードに差し替えてください。
// 管理画面だけにかけたい場合は以下を有効化
add_action('admin_init', 'add_basic_auth');
まとめ
WordPress サイト全体に Basic 認証を設定する方法を紹介しました。