先日、きょうにぃブログの一部ページで以下のWarningが表示されました。
Warning: Undefined variable $str in /home/xxxxx/wp-content/themes/jin/ogp.php on line 108
本番環境でWarningが表示されるのは避けたいところです。
同様の事象で困る方がいるかもしれないので、
原因と実際の解決方法を共有します。

発生状況
- WordPressテーマ:JIN
- 特定のカテゴリページで発生
- そのカテゴリ内に記事が1件も存在しない状態
原因
結論から言うと、
カテゴリの中に記事が1件も無い状態で公開していたこと
が原因でした。
空のカテゴリページを表示した際に、
OGP生成処理(ogp.php)内で参照される変数がセットされず、$str が未定義のまま処理されていたようです。
つまり、
「カテゴリは存在するが中身が空」
という状態がトリガーになっていました。
実際に行った対処法(簡単)
テーマファイルは触っていません。
行ったことはシンプルです。
✔ そのカテゴリ内に「準備中」の記事を1件投稿
内容は短くてOK。
例:
本カテゴリは現在準備中です。
公開までしばらくお待ちください。
これを1記事追加しただけで、
Warningは解消しました。
なぜこれで直るのか?
カテゴリに記事が1件でも存在すると、
- OGP生成処理で参照する値が取得できる
- 変数が正しくセットされる
結果としてUndefined variableが発生しなくなります。
同じエラーが出たら確認すること
同じエラーが出たら確認することは、
- 該当カテゴリに記事は入っているか?
- 下書きではなく「公開」状態になっているか?
- 表示対象ページは本当に空ではないか?
テーマ改修の前に、
まず「空カテゴリ」を疑うとよいかもしれません。
学び
本件の学びとしては、
・空カテゴリは意外と盲点
・本番環境でWarningは信頼性を下げる
・まずは構成を疑う
今回はコード修正ではなく、
運用面の修正で解決しました。
まとめ
今回のWarningの原因は、
「空のカテゴリを公開していたこと」
でした。
同じ現象で困っている方の参考になれば幸いです。
ではまた!!





