サイトはちゃんと表示されているのにWordPressにログインできなくなってしまうことは、割とよくあります。
今回はその問題を解決させていただいたので、その方法をお伝えします。
まず、依頼者様のサイトでログインしようとしたところ、以下のようなメッセージが表示されてしまいました。
このようなメッセージが出た場合に、「なになに、Cookie周りに問題があるのだな」と考えがちですが、あまりエラーメッセージはあてにしない方がいいことも多いです。今回もCookieは関係ありませんでした。
解決方法
裏では本当は何が起きているのかを知るために、エラー情報を見るところから始めます。
WordPressをインストールしたディレクトリにwp-config.phpがあるので、それをエディターで開きます。
define('WP_DEBUG', false);
という記述があるので、これを以下のように書き換えます。
define('WP_DEBUG', true);
if (WP_DEBUG) {
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);
}
こうすることで、エラーの情報がwp-contentディレクトリの中にあるdebug.logに書き出されます。
debug.logを見てみると、
といったメッセージが書き込まれていました。
二つphpファイルの名前が出てきてややこしいのですが、この場合はfunctions.php:383に注目してください。この場合だと、テーマのfunctions.phpの383行目に問題があると言っています。
ちなみにfunctions.php:1となっている場合は1行目に問題があるということになります。
そこでfunctions.phpの問題の箇所を見てみると、ファイルが?>で終わっていて、その下に複数行の改行がありました。
?>で終わることは問題ないのですが、その下に複数行の改行があると、phpでは予期しない問題を引き起こすことがあります。
また、?>で終わることにより、このようなわかりにくい現象が起きやすいので、?>はphpファイルの最後には付けない方が安全です。
そのため今回は、?>およびその下の改行を削除したところ、無事にログインできるようになりました。