【対処法】「Fatal error: Uncaught Error: Call to a member function get_row() on false」エラー

この記事では、WordPressでブログ記事を公開したら、その記事だけ「Fatal error: Uncaught Error: Call to a member function get_row() on false」エラーがでて表示されない時の対処法を書きます。
あくまでおま環での対処法になりますが、URLスラッグを直すと解決しました。
いつも通り、WordPressのブロックエディターで記事を書いて「よーし、公開すっぞー!」と公開ボタンを押しました。

公開した記事を確認しようとURLを開いてみると、なんと冒頭に貼った画像が表示されて記事が表示されていませんでした。
自分であれこれやっていたら、特定の行動をすることで100%直ることが分かったので記事にします。
といっても多分おま環のような気がします。
本来のエラー内容に対する対処法とはちょっと違う気がします。なのであくまでこいつはこれで直ったという一つの参考として受け止めてください。これで絶対皆さんの環境で直る保証はないです。
【問題】エラーコード
以下のようなエラーコードです。
Fatal error:
Uncaught Error: Call to a member function get_row() on false
in /home/〇〇/public_html/〇〇/wp-includes/class-wp-post.php:243
Stack trace:
#0 /home/〇〇/public_html/〇〇/wp-includes/post.php(1132):
WP_Post::get_instance()
#1 /home/〇〇/public_html/〇〇/wp-includes/theme.php(2012):
get_post()
#2 /home/〇〇/public_html/〇〇/wp-includes/theme.php(2049):
wp_get_custom_css_post()
#3 /home/〇〇/public_html/〇〇/wp-includes/theme.php(1969):
wp_get_custom_css()
#4 /home/〇〇/public_html/〇〇/wp-includes/class-wp-hook.php(341):
wp_custom_css_cb()
#5 /home/〇〇/public_html/〇〇/wp-includes/class-wp-hook.php(365):
WP_Hook->apply_filters()
#6 /home/〇〇/public_html/〇〇/wp-includes/plugin.php(522):
WP_Hook->do_action()
#7 /home/〇〇/public_html/〇〇/wp-includes/general-template.php(3197):
do_action()
#8 /home/〇〇/public_html/〇〇/wp-content/themes/luxeritas/inc/filters.php(94):
wp_head()
#9 /home/〇〇/public_html/〇〇/wp-includes/class-wp-hook.php(341):
{closure:/home/〇〇/public_html/〇〇/wp-content/themes/luxeritas/inc/filters.php:21}()
#10 /home/〇〇/public_html/〇〇/wp-includes/plugin.php(205):
WP_Hook->apply_filters()
#11 /home/〇〇/public_html/〇〇/wp-content/themes/luxeritas/header.php(146):
apply_filters()
#12 /home/〇〇/public_html/〇〇/wp-includes/template.php(814):
require_once('/home/〇〇/...')
#13 /home/〇〇/public_html/〇〇/wp-includes/template.php(749):
load_template()
#14 /home/〇〇/public_html/〇〇/wp-includes/general-template.php(48):
locate_template()
#15 /home/〇〇/public_html/〇〇/wp-content/themes/luxeritas/404.php(18):
get_header()
#16 /home/〇〇/public_html/〇〇/wp-includes/template-loader.php(125):
include('/home/〇〇/...')
#17 /home/〇〇/public_html/〇〇/wp-blog-header.php(19):
require_once('/home/〇〇/...')
#18 /home/〇〇/public_html/〇〇/index.php(17):
require('/home/〇〇/...')
#19 {main}
Thrown in /home/〇〇/public_html/〇〇/wp-includes/class-wp-post.php
on line 243
このサイトで重大なエラーが発生しました。
WordPress のトラブルシューティングについてはこちらをご覧ください。
別に個人情報は含まれていないんですが、念のため一部「〇〇」に置き換えています。
ずらずら書かれていますが、一番大事なのは一行目の「Fatal error: Uncaught Error: Call to a member function get_row() on false」だと思います。
初めてのパターンで、一瞬「乗っ取り!?何!?」と焦ったんですが、ログイン履歴や管理画面は特に異常がなく、サイト・サーバー全体がダメになっているわけでもなく、公開したその記事のみだったので、恐らく何かしらの個別設定が悪さしていると判断しました。
ChatGPTに投げかけてみたんですが、参考になりそうにない回答でした。

【対処法】URLスラッグを変えたら問題なく公開できた
僕の場合、問題の記事のURLスラッグを変えると、無事に公開→正常に表示されました。

なぜこれで直るのかは全く分かりません。
たまたま設定していたURLスラッグがシステム的にNGでエラーがでるようなものだったのか、URLスラッグを作成したタイミングがちょーどシステム的によくない時間帯・環境で、うまく内部とかみ合わずにエラーが出ていたのか、素人には全く分かりません。
URLスラッグを別の文字列に変えて保存・公開することで、ちゃんと内部的にもかみ合っていい感じに直ったのかなと予想しています。
試したこと
別で新規記事公開
試しに「テスト」という名前、本文に「テスト」と書いただけの記事を新規公開してみました。
本当は本番環境でそういうことするの良くないんでしょうが、まぁ個人ブログなので。たまたま見た読者様いたらすみません。
その記事は問題なく表示されました。つまり、エラーがでる記事のみ何かがおかしいってことになります。
丸々記事をコピーして公開
該当記事の中身が問題なんじゃなくて、たまたまその記事(投稿ID)自体の調子が悪かっただけで、全く同じ内容でも別投稿IDとしてなら問題なく公開できるんじゃないかと思い試してみました。
新規下書き記事を作成して、問題の記事の中身を丸々コピーします。URLスラッグからアイキャッチ画像、中身のブロックまで完全に同じようにね。
その記事を公開したところ、同じようにエラーがでました。
つまり、新規記事だからOKってわけではなく、コピーした中の何かがトリガーとなって、こいつが含まれているとどの投稿IDの下書き記事でも正常に表示されなくなる…ってことなのかなと予想しました。
ブロックを徐々に減らして更新
問題記事の中身をコピーしなかった全く無関係の新規記事は問題なく表示されることから、記事内の特定のブロック(段落行やコード、画像ブロックなど)が悪さしている可能性を考えました。
そこで、完成した記事から見出しやら文章やらを一旦別の下書き記事に移動してみました。徐々にブロックを減らして更新→確認することでどのブロックが悪さしているか特定しようって作戦です。
どこかのタイミングでエラーが出ず正常に表示されるようになったら、直前に移動させたブロックが悪いってことになります。
結果、タイトル以外全部削除してもエラーがでました。
これで記事内の特定のブロックが悪いわけではないことが判明しました。
部分的にメタデータを編集する
続いて中身ではなく記事自体の設定をちょっとずつ変える作戦を実行しました。これで対処法を見つけたってわけです。
説明(メタディスクリプション)、カテゴリー、ディスカッション(コメントの許可)、更新方法(日時)などを変えてみましたが、特に変わらずエラーがでました。
最後にURLスラッグを変えたところ、無事にエラーがでることなく記事が表示されました。
感想
以上、WordPressでブログ記事を公開したら、その記事だけ「Fatal error: Uncaught Error: Call to a member function get_row() on false」エラーがでて表示されない時の対処法でした。
「ChatGPT」によると今回のエラーコードは存在しないユーザー(投稿者)を参照しようとしてエラーがでている…ってことらしいので、本来は投稿者をちゃんと存在しているユーザーに変えるっていうのが一つの対処法なのかもしれません。
ただ、僕の場合投稿者(管理者)は一人だけです。他のユーザーが存在しないのでそもそも参照(選択)しようがなかったです。
ま、無事解決して良かったです。







ディスカッション
コメント一覧
まだ、コメントがありません