サカグチデザインオフィス

ブログBlog

WordPressで警告文:Warning: Invalid argument supplied for foreach()

2013.08.11更新

WordPressのデフォルト検索機能を使用したところ、検索結果ページに警告文が出てきたのでメモです。 「検索結果に該当する記事が無かった場合」にだけ出た警告で、「該当する記事が見つかった場合」には警告がでませんでした。

Warning: Invalid argument supplied for foreach() (省略)/wp-includes/post.php on line 3588

調べていたら、どうやら記事がないのにforeach()を処理しようとしているのが問題のようです。

結論から言うと、テンプレート内に記述していた、$post->○○○○が原因で警告文を出していました。 ページに表示するべき記事が無いのに(=検索結果が無いのに)$postを参照しようとしていたためです。

なので記事があるかどうかをまず確認してから処理するように変更しました。 簡単に書くと下記のような感じです。

if(!empty($post)){
    $post->○○○○;
}

検索結果が無かった場合のみの警告だったので、その表示方法が問題なんだと勘違いして意外と原因特定に時間がかかってしまいました・・・。3.6バージョンアップ直後だったのも厄介でした・・・。

ウェブ戦略にお悩みですか?

御社のWEB事業部となって、分析とデザインで集客から売り上げまで改善します!
デザインは2005年から。携わったHPは200件以上!