ワードプレスで発生した謎の「post_status」on nullエラー:原因と解決策
WordPressでカスタマイズ画面を開いた時、突然こんなエラーが表示されたことはありませんか?
Warning: Attempt to read property “post_status” on null in /◯◯/◯◯/◯◯/public_html/wp-admin/includes/template.php on lineXXXX
一見、テンプレートファイル(template.php)に問題があるように見えますが、実は別の原因が潜んでいる可能性があります。
筆者もつい最近、このエラーに遭遇し、解決策を見つけるのにかなり苦労しました。今回は、このエラーの解決過程と原因、そして解決策を皆さんと共有したいと思います。
発生状況とエラー内容
このエラーは、WordPressのダッシュボードからカスタマイズ画面を開いた時に発生しました。表示・編集やカスタマイズなどはできるのですが、画面上部に上記のエラーメッセージが表示されたままなので解決しなければなりません。
原因特定の道のり
テンプレートファイル(template.php)に問題があるのではないかと考え、まず該当箇所を調べました。しかし、問題箇所は見当たらず、エラーの原因は特定できませんでした。
次に、フォーラムやブログなどで同様のエラー事例を調査しました。しかし、解決策は見つかりません。
意外な解決策
色々試行錯誤する中で、null ってことは、、、ないものを表示させようとしている。投稿記事をくまなく探しても見つけられません。
この場合、404エラーになるはずですから。
ということは固定ページ?と、メニューを確認してみました。
固定ページ一覧ではなく、カスタマイズ画面からメニューを全て確認しました。
すると、赤枠でエラー表示が出ている箇所が見つかり中を見ると空っぽ。
つまり「null」です!
見つけたぞ!まるで世紀の大発見をした気分?でした。
メニュー内の空っぽ(null)の固定ページを削除してみると、なんとエラーが消えたのです。
やっとです、3日かかりました。
考察と教訓
今回のエラーの原因は、固定ページメニューの削除によって、WordPress内部で予期せぬ処理が発生していたと考えられます。具体的には、削除されたメニューIDを参照しようとした際に、null値が返され、エラーが発生していたようです。
このエラーは、テンプレートファイルに直接的な問題があるわけではなく、WordPress内部の処理に起因するものでした。そのため、テンプレートファイルを修正しても解決しなかったのです。
まとめ
今回の経験を通して、WordPressでエラーが発生した場合は、必ずしもテンプレートファイルに問題があるとは限らないことを学びました。エラー内容をよく理解し、様々な可能性を検討することが重要です。
また、固定ページメニューの編集は、予期せぬエラーを引き起こす可能性があることもわかりました。メニューを編集する際は、十分注意する必要があります。