事の発端
適宜、Wordpressで投稿の公開予約をしていたのですが、
最近、既定の時間に投稿されない投稿ミスが続きました。
WordPressの予約投稿は、
誰かがWordpressにアクセスした際に「wp-cron.php」が呼び出され
投稿等の処理が自動でされる疑似的なcron機能によって動いています。
したがって、アクセスごとにwp-cron.phpが処理を行うので、
アクセス数が増えると負荷もどんどん増します。
このBlogの場合、投稿ミスがどう起きたのかはよく分かりませんが、
このWordpressのCron機能に問題が発生したと判断しました。
WordPressのwp-cron.php自動読み込みの停止
FTPでログインし、「wp-config.php」を書き換えます。
define(‘DISABLE_WP_CRON’, ‘true’);
の一文を追記し、Wordpressの疑似cronを停止させます。
(ここに落とし穴がありました、解決方法に注意点が書いています)
サーバーのcron機能をONにする
サーバーのcron機能を使用して、一定の時間ごとにwp-cron.phpを呼び出します。
Lolipopの場合、サーバーの管理・設定 → cron設定 から行います。
私の場合、一応、5分毎に設定してみています。
ちなみにwp-cron.phpは、
テーマやプラグインのアップデート通知やプラグイン機能(自動バックアップ)などの実行にも関係しているので、
可能な限りwp-cron.phpは定期的にアクセスされるようにした方が好ましいです。
WordPressの動作に問題が発生
そして、ここで、問題が発生しました。
何かがおかしい。。。
動作が不安定でもないけど、表示や画面遷移が変?
問題の特徴
- メディアライブラリが表示されない
→リスト表示は可能。グリッド表示ができない
- 投稿、下書きを押すとpost.phpで止まって(白い画面になり)次の画面に遷移しない
- デバッグモードでは、何かしらのエラーを常に吐く
→「wp-config.php」に起因するエラーです。 - 正しいログイン情報を入力してもログインできない
→エラーは吐かずにログイン画面から遷移しない
確認事項
- post.phpなど白い画面で停止しても、操作自体は正常い記録されている
- 画像のアップロードは正常に行える
- プラグインを無効にしても動作は関係ない
- パーミッションも正常に設定されている
- admin-ajax.phpは問題ない。修正しても変化なし
- WordPressを再インストールしても変化なし
- functions.phpには不要なスペースや改行は入っていない
いろいろな項目をチェックしました。
探しに探して、悩みに悩んでたどり着きました。
解決方法
これを見るだけでわかる人もいるかと思います。
ずばり、文字コードの問題です。
Windowsのメモ帳で保存すると、「UTF-8」で保存できていそうでしたが、
本来は、「UTF-8N」で保存する必要があります。
これでFTPアップロードすると何事もなかったように改善しました。
ちなみにWordpressのコメントに下記の記載があります。
// 注意:
// Windows の “メモ帳” でこのファイルを編集しないでください !
// 問題なく使えるテキストエディタ
// (http://wpdocs.osdn.jp/%E7%94%A8%E8%AA%9E%E9%9B%86#.E3.83.86.E3.82.AD.E3.82.B9.E3.83.88.E3.82.A8.E3.83.87.E3.82.A3.E3.82.BF 参照)
// を使用し、必ず UTF-8 の BOM なし (UTF-8N) で保存してください。
簡単な理由でした。。。
しょうもない理由ですが、気が付かなかったので、メモ程度に残しておきます。
メモ
Warning: Cannot modify header information – headers already sent by (output started at /[FTPパス]/wp-config.php:1) in /[FTPパス]/wp-admin/includes/misc.php on line 1196
Warning: Cannot modify header information – headers already sent by (output started at /[FTPパス]/wp-config.php:1) in /[FTPパス]/wp-includes/pluggable.php on line 1251
Warning: Cannot modify header information – headers already sent by (output started at /[FTPパス]/wp-config.php:1) in /[FTPパス]/wp-includes/pluggable.php on line 1254
WordPressユーザーのためのPHP入門 はじめから、ていねいに。[第3版] 〈WordPress 5.x/Gutenberg対応〉