WordPressで作った一部のブログ記事にパスワード保護をかけているのですが、
先日、正しいパスワードを入れてもログインできず、
繰り返しパスワード入力画面が表示されるという不具合が起きました。
これが不可思議な現象で、
例えば、パソコンならブラウザをCtrl+F5で更新したり、
スマホだったら、一度そのタブを閉じて、新しいタブでまた同じページを開くと、
すでにログインした状態で表示される(ログインに成功している)のです。
- WordPressのバージョンのアップデートが悪かったのか?
- PHPのバージョンを5から7にしたのが悪かったのか?
- テーマ自体をアップデートしたのが悪かったのか?
- httpとhttpsの設定で不具合が出ているのか?
- パーマリンクが悪いのか?
などを探ってみたり、WordPressの英語のフォーラムで同じ現象の人がいっぱいいたので、それも見ながら全部チェックしたのですが、どれも効果なし!
しかし、その原因が分かりました。
私の場合、原因はサーバーでした。
パスワード保護ページに正しいパスワードを入れてもログインできない原因
当方はXサーバーを使っているのですが、
原因は、Xサーバーで提供している「サーバーキャッシュ」でした。
このサーバーキャッシュ設定に行き、サーバーキャッシュをOFFにします。
この注意書きにも書かれてる通り、ログイン画面でバグが出やすいようです。
実際に、自分もこのサーバーキャッシュをOFFにして、
ブラウザのキャッシュやWordPressのキャッシュプラグインのキャッシュなども一度削除した後に、パスワード保護ページにログインを試した所、正常にログインできるようになりました。
注意ポイント
必ずブラウザのキャッシュは消しましょう。でないと正しい結果にならないです。
例えば、PCのChromeなら、設定→詳細設定に行って、「閲覧履歴データの削除」で
「Cookieと他のサイトデータ」「キャッシュされた画像とファイル」の2つを削除します。
iPhoneのSafariだったら、「設定→Safari→履歴とウェブサイトデータを削除」です。
*閲覧履歴全部消えるので注意
ちなみに、それでもうまくいかない場合、
同じくXサーバーの高速化項目にある「mod_pagespeed*」や「ブラウザキャッシュ」も一度OFFにしてみると良いです。
*mod_pagespeedは現在、サービス終了してるので、一度OFFにすると2度とONにはできなくなるので、それだけ注意
今回チェックしてみたその他の部分
当方の場合、パスワード保護ページにログインできなかった原因はXサーバーの「サーバーキャッシュ」でしたが、
そういったサーバーの高速化設定をいじっても効果が出ない場合は、
以下の項目をチェックしてみましょう
必ずバックアップを取ってからやりましょう。いろいろいじってるうちに他の部分で不具合が出たりするので、注意!
他のテーマでも同じ現象が起こるか?
WordPressテーマを他のテーマに変えても同じくログインできないでしょうか?テーマを変えてログインできる場合は、
- テーマとWordPressのバージョンの相性が悪い
- テーマとPHPのバージョンの相性が悪い
- テーマのバージョンを変えた事が原因
などが考えられます。
それぞれの古いバージョンをバックアップから復元したりして、
どこが悪いのかを探ると直る可能性があります。
結構、WordPressのバージョンやPHPのバージョンを変えると、影響が出たりするので、
それぞれのバージョンを変更してみて、どんな影響が出るかをチェックしてみましょう。
設定→一般設定のアドレスがhttpsで統一されてるか?
一部の意見では、httpでパスワード保護画面にアクセスした場合はログインできて、httpsでアクセスすると、パスワード保護画面を突破できないという現象もあるようです。
その原因として、この設定画面のWordPressアドレスとサイトアドレスがちゃんとhttpsで統一されてなかったりというのが原因の場合もあるようなので、
まずは、ちゃんとここがhttpsになってるかもチェックした方が良いでしょう。
またReally Simple SSLなどのhttpsプラグインを使ってる場合は、最新版に更新する事で、不具合が直る可能性もあります。
httpとhttpsのリダイレクトがおかしい!?
ちなみに、こちらのサイトでは「.htaccessに追記で直った」という記事が。
私の場合は、同じのを試した所、逆にXサーバーのアクセス禁止画面が表示されてしまって、そのページへのアクセス自体が不能になりました(もちろん追記を消せば、元通りです)。サーバーによっては効果があるようなので、紹介しておきます。
パーマリンクを更新してみよう
パーマリンクを変えるのではなく、ただ単に保存ボタンを押して、更新する事で、直る場合もあるようです。
固定ページのパーマリンク変更しちゃってないですか?
また、後からそのページのパーマリンクだけを変更したりしてないですか?
固定ページだと良くあると思います。
パスワード保護してる固定ページのリンクを変えた場合、正しくパスワードが反映されてない事もあるようですから、
そういう場合は、新規作成で新しい固定ページを作って、
新しいパーマリンクで、新しいパスワードを設定する事で直るパターンもあるそうです。
また、パーマリンクがダブってる場合(2つの同じパーマリンクの固定ページがある)とか、そういう場合、やはりバグが出るようですので、そんな事がないかもチェックしてみると良いでしょう。
直らないなら、パスワード入力画面に注意書きを追記しよう!
もし、どうしても直らないとしても、冒頭で書いた通り、
大抵ブラウザを更新したり、一度タブやブラウザを閉じて、もう一回同じページを開くと、
あら不思議、ログインがちゃんとされてたりします。
だったら、ログインページにこうやって注意書きを書けば良いですよね。
この注意書きの書き方ですが、
functions.phpに、以下を追記します。
コピーしました
コピー
function my_password_form() {
return '<p>このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。</p>
<p>正しいパスワードを入力しても同じパスワード入力画面が表示される場合は、パソコンなら、Ctrl+F5ボタンを押してページの更新をする事でログインできます。</p>
<p>スマホの場合は、一度そのタブを閉じて、再度、https:にアクセスください。そうするとログインされた状態になります。</p>
<form class="post_password" action="' . home_url() . '/wp-login.php?action=postpass" method="post">
パスワード <input name="post_password" type="password" size="24" /> <input type="submit" name="Submit" value="' . esc_attr__("確定") . '" />
</form>';
}
add_filter('the_password_form', 'my_password_form');
<p>~</p>の部分は、ご自由に変更すればOKです。
そうする事で、「あれ~ログインできないなぁ~」というユーザーも、注意書きを読む事で、ログインできるわけです。
というわけで、これらを試してみて、パスワード保護ページにログインできないという不具合から脱出できる事を祈っております。