WordPressで、特定のカテゴリやページにベーシック認証をかける
ディレクトリが実在しないからかけられない…と思いがちですが、ディレクトリなら切ってしまえばいい。
- ベーシック認証をかけたい箇所にディレクトリを作成
- WPルートにある index.php と .htaccess をコピー
- コピーした .htaccess にいつものベーシック認証の記述を追記
- コピーした index.php の wp-blog-header.php のパス変更
- .htpasswd を作成
- index.php と .htaccess と .htpasswd を作成したディレクトリにつっこむ
コピーした index.php と .htaccess 、作成する .htpasswd の実際の内容を書いていきます。
index.phpの書き換え該当箇所
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
のパスを
require( dirname( __FILE__ ) . '/../wp-blog-header.php' );
等、適宜変更
.htaccessの追記内容
AuthType Basic AuthName "Input your ID and Password." AuthUserFile フルパスとかけたいディレクトリ.htpasswd require valid-user
「フルパスとかけたいディレクトリ.htpasswd」の例:/home/users/ドメイン/memo/.htpasswd
フルパスは
<?php echo dirname(__FILE__); ?>
で取得できる。
.htpasswdの内容
IDと暗号化されたパスワードを:でつないで書くだけ。
ここで作成すると楽。
LUFTTOOLS .htpasswd ファイル作成
リダイレクトループが発生する場合は functions.php へ
remove_filter('template_redirect', 'redirect_canonical');
を追記。