記事内に広告を含む場合があります
WordPressの管理画面にログインする時にだけベーシック認証をかけているつもりなのに、サイトの投稿を閲覧しているとベーシック認証の画面が表示されてしまった場合、WordPressの有名プラグイン「WordPress Popular Posts」の不具合の可能性があります。
今回は、WordPressサイトで、wp-adminにだけベーシック認証を設定しているのに、WordPress Popular Postsというプラグインを使っている場合に発生する不具合の回避方法を紹介します。
ベーシック認証の画面表示の再現
今回のベーシック認証の画面表示というのは、WordPressの管理画面にログインする際に表示されるなら問題ないのですが、通常のコンテンツページを閲覧しようとした時に表示されていること指します。上図の画面のような状況です。
わたしはエックスサーバーを使っているので、エックスサーバーの画面でアクセス制限を設定しているので、その設定ミスかなと思ったのですが、しっかりwp-adminのみに設定されていて、wp-contentには設定されていませんでした。
原因はプラグインWordPress Popular Postsだった
なぜコンテンツページでベーシック認証が表示されるのか、apacheのログを調べてみると、ランキング表示で有名なプラグインのWordPress Popular Postsが原因であることがわかりました。
このプラグインを設定していると、wp-adminにあるadmin-ajax.phpにアクセスしてしまうようです。これが原因でwp-adminにアクセスしていることで、ベーシック認証の画面が表示されてしまうことがわかりました。
ただ、このプラグインの設定で、Ajaxを使う機能を制御しようとしたのですが、これが原因でデータ抽出を失敗して、「Sorry. No data so far.」という文字が表示されてしまうような現象が発生しているようです。
ランキング表示で、データ抽出を失敗してランキングをうまく表示させることができないようでは困るし、このプラグインは気に入っているので、しかたなくベーシック認証をする時のルールを.htaccessに追記することにしました。
.htaccessに追記して対応する
サーバーにFTP接続して、.htaccessに以下を追記しました。
<Files ~ "^admin\-ajax\.php$"> Satisfy Any allow from all </Files>
これを追記することで、問題を解決させました。
あなたのサイトのカレントディレクトリ直下に.htaccessに、これを追記すると今回の問題は解決しますので、ぜひ同じような現象で困っている人がいたら、上のコードをコピーペーストしてみて、.htaccessに追記してみてください。
まとめ
エックスサーバーでwp-adminにベーシック認証を設定していて、ランキング表示で有名なプラグインWordPress Popular postsを設定している人なら、同じような現象が起きている可能性があります。
ベーシック認証をやめるのはセキュリティ的にも嫌だし、WordPress Popular postsを使うのをやめるのも嫌だという人がいると思うので、回避方法を紹介しました。
これより良い方法があるのかもしれませんが、取り急ぎ同じような現象で困っている人もいると思うので、参考にしてもらえればと思います。
これより良い方法があれば、ぜひコメントやメールで教えてくれると嬉しいです。