WordPressの特定のページにBasic認証を設定する方法
MENU
  1. HOME
  2. WordPress / カスタマイズ
  3. WordPressの特定のページにBasic認証を設定する方法

最近の作業実績

  • 2024年04月06日非レスポンシブのサイトをレスポンシブ化いたしました。
  • 2024年04月05日テーマファイルが編集できない不具合を解消いたしました。
  • 2024年04月04日WordPress、テーマ、プラグイン、のバージョンアップを担当いたしました。
  • 2024年04月03日不具合で表示されなくなったサイトを表示される状態まで復旧いたしました。
  • 2024年04月02日お問い合わせフォームを再構築いたしました。
  • 2024年04月01日不具合で表示されなくなったサイトを表示される状態まで復旧いたしました。
  • 2024年03月31日サーバー移管に共に表示されなくなったサイトを表示される状態まで復旧いたしました。
  • 2024年03月30日WordPressの操作方法をサポートいたしました。
  • 2024年03月29日サイドバーに人気記事を表示させる仕組みを導入いたしました。
  • 2024年03月28日テキスト等の簡易な修正を行いました。
  • 2024年03月27日アイキャッチが表示されない不具合を修正いたしました。
  • 2024年03月26日WordPressの操作方法をサポートさせていただきました。
  • 2024年03月25日サイト上で発生していたリンクの不具合を解消いたしました。
  • 2024年03月24日不具合で表示されなくなったサイトを表示される状態まで復旧いたしました。
  • 2024年03月23日WordPress、テーマ、プラグイン、のバージョンアップを担当いたしました。
  • 2024年03月22日WordPressにログインできない不具合を解消いたしました。
  • 2024年03月21日既存サイトにセキュリティ対策を導入いたしました。
  • 2024年03月20日メールフォーム周りで発生していた不具合を解消いたしました。
  • 2024年03月19日記事一覧をカテゴリー単位で表示できる様にカスタマイズいたしました。
  • 2024年03月18日WordPress、テーマ、プラグイン、のバージョンアップを担当いたしました。
  • このエリアには直近の制作実績を一部掲載しております。
  • 制作実績はリアルタイム反映ではありません。

WordPressの特定のページにBasic認証を設定する方法

この投稿は2020/06/04に加筆修正いたしました。
特定の投稿や特定の固定ページなど、一部のページにのみBasic認証を設定したいと考えたことはありませんか?

私はとある案件で、特定のページにのみBasic認証を設定しなければならなくなりました。
調べてみると、以外と簡単なカスタマイズでBasic認証を設定することができました。

今回は、そのとき行ったカスタマイズをご紹介したいと思います。
特定のページにのみBasic認証を設定するカスタマイズです。

仕組みさえ分れば、3分も程度で行えます。
コピペ用のコードも用意しておきましたので、ご利用ください。

それでは、特定のページにのみBasic認証を設定するカスタマイズをご紹介していきます。
この記事は約 12 分で読めます。

特定のページにBasic認証を設定する手順

特定のページにBasic認証を設定する手順を見ていきましょう。
手順は全部で5ステップです。

  1. functions.phpにコードを追加する。
  2. header.phpにコードを追加する。
  3. Basic認証を設定するページを定義する。
  4. 認証用のユーザー名とパスワードを設定する。
  5. Basic認証が正常に動作しているか確認する。

個別に解説していきます。

手順1:functions.phpにコードを追加する

まずは、以下のコードを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);
}

こちらのコードは調整する必要がありません。
functions.phpに追記すれば、作業は完了です。

手順2:header.phpにコードを追加する

header.phpの一番上に、以下のコードを追記してください。
一番上に追記しないと正常に動作しませんので注意が必要です。

<?php
if(!is_home()):
if(is_page('1')):
$userArray = array(
"admin" => "12345"
);
basic_auth($userArray);
endif;
endif;
?>

こちらのコードは、Basic認証を設定するページごとにコードを調整する必要があります。
調整方法は、次の項をご覧ください。

手順3:Basic認証を設定するページを定義する

先ほどheader.phpに追加したコードにBasic認証を設定するページを定義します。

<?php
if(!is_home()):
if(is_page('1')):
$userArray = array(
"admin" => "12345"
);
basic_auth($userArray);
endif;
endif;
?>

赤文字部分が、Basic認証を設定するページを定義している部分です。
今回のコードは、ページIDが【1】の【固定ページ】にBasic認証を設定しています。

ひとまず、Basic認証の動作確認をしたいので、上記コードの【1】の部分を適当な固定ページのページIDに書き換えてください。動作確認をしますので、存在するページIDに書き換えてください。

カテゴリーページやカスタム投稿にBasic認証を設定する方法は後述しています。
そちらをご覧ください。

手順4:認証用のユーザー名とパスワードを設定する

認証用のユーザー名とパスワードを設定します。
ユーザー名とパスワードは任意の文字列を設定してください。

<?php
if(!is_home()):
if(is_page('1')):
$userArray = array(
"admin" => "12345"
);
basic_auth($userArray);
endif;
endif;
?>

【admin】の部分が【ユーザー名】を定義している部分です。
【admin】を任意の【ユーザー名】に変更してください。

【12345】の部分が【パスワード】を定義している部分です。
【12345】を任意の【パスワード】に変更してください。

複数のユーザー名とパスワードを設定したいときは、以下のように設定しましょう。

<?php
if(!is_home()):
if(is_page('1')):
$userArray = array(
"ユーザー名" => "パスワード",
"ユーザー名" => "パスワード",
"ユーザー名" => "パスワード",
"ユーザー名" => "パスワード"

);
basic_auth($userArray);
endif;
endif;
?>

赤文字部分の一番最後の行に注目してください。
一番後ろに【,】が付いていません。

最後のユーザー名とパスワードの行は、最後の【,】は不要です。
【,】を付けると動作しなくなりますので注意してください。

以上で、ユーザー名とパスワードの設定は完了です。

手順5:Basic認証が正常に動作しているか確認する

手順1~4までの作業でBasic認証は完了しました。
Basic認証が正常に動作しているか確認してみましょう。

Basic認証を設定したページにアクセスしてみます。
例えば、ページID【1】の固定ページにBasic認証を設定したなら、そのページにアクセスします。

上記のように、ユーザー名とパスワードを求められればひとまず成功です。

上記の画像はGOOGLEクロームの場合です。
ブラウザによって認証画面は異なります。

設定したユーザー名とパスワードで認証して、ページが表示されればBasic認証の設定は成功です。

認証画面が表示されない場合は、これまでの手順に誤りがある可能性があります。
手順1~4に誤りが無いか確認してください。

認証画面は表示されるが、ユーザー名とパスワードを入れても認証できない場合。
こちらは、次の項の解決策を試してみてください。

追記:正しいIDとPASSでも認証できない場合の対処法

正しいユーザー名とパスワードを入力しても認証できない場合。
.htaccessのコードを調整すると認証できるようになる可能性があります。

WordPress本体と同じ階層にある【.htaccess】のコードを以下のように調整します。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

上記の部分を以下のように書き換えます。

# BEGIN WordPress
IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

赤文字の部分を追加しました。

これで、正常に認証できるようになる可能性があります。

【ページの種類別】Basic認証を設定する方法

Basic認証は、以下のようなページに設定することができます。

  • 特定の投稿
  • 特定の固定ページ
  • 特定のカテゴリーページ
  • 特定のタグページ
  • 特定のカスタム投稿

Basic認証を設定するページ、header.phpに追加したコードに定義してやります。

<?php
if(!is_home()):
ここの記述を変えます。
$userArray = array(
"admin" => "12345"
);
basic_auth($userArray);
endif;
endif;
?>

上記の赤文字部分がBasic認証を設定するページを定義する部分です。
ここをBasic認証を設定するページを定義するコードに置き換えてやります。

個別に見ていきましょう。

特定の投稿にBasic認証を設定する方法

特定の投稿にBasic認証を設定したい場合は、以下のように記述します。

<?php
if(!is_home()):
if(is_single('投稿ID')):
$userArray = array(
"admin" => "12345"
);
basic_auth($userArray);
endif;
endif;
?>

【投稿ID】の部分に、Basic認証を設定したい【投稿ID】を記述してください。

投稿IDの調べ方は、以下のコンテンツを参照してください。
WordPressの投稿IDやカテゴリーIDなど各種IDの調べ方

複数の投稿にBasic認証を設定したい場合は、前述したコードの赤文字部分を次のように変更します。

if(is_single(array('投稿ID', '投稿ID', '投稿ID'))):

【’投稿ID’】を【,】で区切って複数指定してやります。
一番最後に【,】をつけると、正常に動作しませんので注意してください。

投稿ページは、デフォルトでパスワードを設定することができます。
Basic認証を設定する機会はあまりないかもしれません。

特定の固定ページにBasic認証を設定する方法

特定の固定ページにBasic認証を設定したい場合は、以下のように記述します。

<?php
if(!is_home()):
if(is_page('ページID')):
$userArray = array(
"admin" => "12345"
);
basic_auth($userArray);
endif;
endif;
?>

【ページID】の部分に、Basic認証を設定したい【ページID】を記述してください。

ページIDの調べ方は、以下のコンテンツを参照してください。
WordPressの投稿IDやカテゴリーIDなど各種IDの調べ方

複数の固定ページにBasic認証を設定したい場合は、前述したコードの赤文字部分を次のように変更します。

if(is_page(array('ページID', 'ページID', 'ページID'))):

【’ページID’】を【,】で区切って複数指定してやります。
一番最後に【,】をつけると、正常に動作しませんので注意してください。

特定のカテゴリーページにBasic認証を設定する方法

特定のカテゴリーページにBasic認証を設定したい場合は、以下のように記述します。

<?php
if(!is_home()):
if(is_category('カテゴリーID')):
$userArray = array(
"admin" => "12345"
);
basic_auth($userArray);
endif;
endif;
?>

【カテゴリーID】の部分に、Basic認証を設定したい【カテゴリーID】を記述してください。

カテゴリーIDの調べ方は、以下のコンテンツを参照してください。
WordPressの投稿IDやカテゴリーIDなど各種IDの調べ方

複数のカテゴリーページにBasic認証を設定したい場合は、前述したコードの赤文字部分を次のように変更します。

if(is_category(array('カテゴリーID', 'カテゴリーID', 'カテゴリーID'))):

【’カテゴリーID’】を【,】で区切って複数指定してやります。
一番最後に【,】をつけると、正常に動作しませんので注意してください。

特定のタグページにベーシック認証を設定する方法

特定のタグページにBasic認証を設定したい場合は、以下のように記述します。

<?php
if(!is_home()):
if(is_tag('タグID')):
$userArray = array(
"admin" => "12345"
);
basic_auth($userArray);
endif;
endif;
?>

【タグID】の部分に、Basic認証を設定したい【タグID】を記述してください。

タグIDの調べ方は、以下のコンテンツを参照してください。
WordPressの投稿IDやカテゴリーIDなど各種IDの調べ方

複数のタグページにBasic認証を設定したい場合は、前述したコードの赤文字部分を次のように変更します。

if(is_tag(array('タグID', 'タグID', 'タグID'))):

【’タグID’】を【,】で区切って複数指定してやります。
一番最後に【,】をつけると、正常に動作しませんので注意してください。

特定のカスタム投稿にベーシック認証を設定する方法

特定のカスタム投稿にBasic認証を設定したい場合は、以下のように記述します。

<?php
if(!is_home()):
if(get_post_type() === 'カスタム投稿名'):
$userArray = array(
"admin" => "12345"
);
basic_auth($userArray);
endif;
endif;
?>

【カスタム投稿名】の部分に、Basic認証を設定したい【カスタム投稿名】を記述してください。

カスタム投稿名IDの調べ方は、以下のコンテンツを参照してください。
カスタム投稿名とカスタムタクソノミー名の調べ方

まとめ

WordPressの特定のページにBasic認証を設定する方法を紹介しました。

  1. functions.phpにコードを追加する。
  2. header.phpにコードを追加する。
  3. Basic認証を設定するページを定義する。
  4. 認証用のユーザー名とパスワードを設定する。
  5. Basic認証が正常に動作しているか確認する。

5ステップで、簡単に特定のページにだけBasic認証を設定することができます。
興味のある方は、試してみてください。

Wordpressのカスタマイズや不具合など
何かお困りのことはありませんか?

Wordpressに関連するあなたのお悩み、解決いたします。
次のような方は、お気軽にご相談下さい。

  • Wordpressサイトをカスタマイズしたいが、やり方が分からないで困っている。カスタマイズの知識が豊富な人に任せたい。
  • Wordpressサイトに不具合が発生したが、直し方が分からない。不具合の修正経験が豊富な人に任せたい。
  • 既存サイトにWordPressを導入したいが、やり方が複雑で自分ではできそうにもない。経験が豊富な人に任せたい。
  • WordPressがハッキングされたが修正の仕方が分からない。サイトを元通りにできる人を探している。
  • Wordpressで0からサイトを制作したいが、自分ではできそうにもない。プロにサイト制作を委託したい。

一つでも該当する方は、以下のフォームからお気軽にご相談下さい。

WordPressに関して今すぐ相談する

著者:takaya kondo

岡山在住のWordPress専門フリーランサーです。Wordpressを使ったWEBサイト制作を中心に10年間ほど活動させていただいています。

Wordpress関連の記事でお役に立てれば幸いです。

【関連記事】あなたが興味のありそうな関連記事をご紹介します。

コメントを残す

(必須)

CAPTCHA