先日、きょうにぃブログの一部ページで以下の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が発生しなくなります。

同じエラーが出たら確認すること

同じエラーが出たら確認することは、

  1. 該当カテゴリに記事は入っているか?
  2. 下書きではなく「公開」状態になっているか?
  3. 表示対象ページは本当に空ではないか?

テーマ改修の前に、
まず「空カテゴリ」を疑うとよいかもしれません。

学び

本件の学びとしては、

・空カテゴリは意外と盲点
・本番環境でWarningは信頼性を下げる
・まずは構成を疑う

今回はコード修正ではなく、
運用面の修正で解決しました。

まとめ

今回のWarningの原因は、

「空のカテゴリを公開していたこと」

でした。
同じ現象で困っている方の参考になれば幸いです。
ではまた!!

ABOUT ME
きょうにぃ@資産形成・キャリア選択支援
30代|都内SE|資産形成×キャリア発信|理系大学院卒|IT系サラリーマン|クラウド系インフラエンジニア|(たまに)雑談配信|資産▲240万→500万|AWS・Azure資格保有|元教員志望(数学)|投資・節約・キャリアのリアルを発信中