Simple membershipを使った会員サイトで、ログインしても何かクリックすると即効ログアウトされてしまう現象に悩まされました。何かクリックするたびにログイン画面に遷移してしまい、ダッシュボードもまともに操作出来ない状態。
重い腰を上げて色々調べたら斜め上の原因だったので忘れないようにメモしておこうかと思います。
WordPressから勝手にログアウトされてしまう他の原因はマルウェア感染の可能性もあります。
最初に結論
Snow monkeyのカスタマイザーにあるサイト高速化(β機能)を全てOFFにしたらとりあえず無限ログアウト問題は収束しました。
サイト高速化と他のカスタマイズの相性が悪くて怪現象が起きていたようでした。
原因切り分け
原因はSimple membership関係だろうと思っていたのですが、管理者アカウントがSimple membershipのメンバーになっていたので、管理者アカウントでログインするだけで同じ現象に巻き込まれてダッシュボードの操作が100回に一回ぐらいしか出来ない状態。
めげずにどうにか管理者アカウントを追加すると、無限ログアウトの現象からはとりあえず避難できました。
Simple Membershipを使う時は会員ではない管理者アカウントを必ず用意しましょう。
この時点でSimple membershipのユーザーは無限ログアウトの問題は解決していないので原因を調べる必要がありました。
標準テーマに変更
問題は再現せず、ログアウト地獄になりませんでした。
このことから、使用しているテーマもしくはカスタマイズに原因がありそうでした。
Snowmonkeyテーマは他のサイトでSimpleMembershipとの組み合わせで実績があるのでおそらくカスタマイズに問題あり。
カスタマイズ部分の問題部分の原因調査
フック系のカスタマイズ
フック系のカスタマイズを全てOFFにしても解決せず
子テーマのテンプレートカスタマイズ
子テーマで上書きしているテンプレートの置き換えをやめると問題発生せず。
この時点で子テーマのテンプレート上書きが影響しているのがわかったものの、その部分がログアウトの問題の原因になっているのか、さっぱりわからず。
一度ログインして、会員専用ページを表示してF5キーを連打してリロードすると、そのうち表示できなくなるので、何らかのキャッシュが影響している感じがしました。
これは何かキャッシュの設定が効いているので、それをまず切らんといかんと思いました。
カスタマイザーの高速化を全てOFFにしたらログアウトの無限ループは止まった
不具合発生時の動きから、もしかしたらキャッシュの影響では?とのひらめきがあったのですが、サーバー側のキャッシュの設定はいじれない環境だったので、まずはテーマ側の確認を行いました。
キャッシュ機能はSnowmonkeyのカスタマイザーの高速化設定の中にあります。確認すると、キャッシュ機能自体は使用していませんでいたが、高速化設定全般がβ版の機能ということで、この際、全てOFFにしてみようということで、全てOFFにしたらあっさり無限ログアウトの地獄が解決しました。
まとめ
WordPressの無限ログアウト地獄はいろんな原因で発生します。今回、会員プラグインであるSimple Membershipとテーマ高速化オプションの組み合わせで問題が起きました。原因を切り分けるのが結構大変だったのですが、最適化や高速化のオプションは常に疑ったほうがよいですね。