DQとは全く関係ないですが、WordPressを4.7にバージョンアップすると以下のようなエラーが、とりあえず対応したのでメモです。
エラーを見るとプラグインでエラーを起こしているようですので、対象のファイルをローカル(PC)に落としました。※ディレクトリ階層は変えています。
Warning: Invalid argument supplied for foreach() in /サイトのパス/wp-content/plugins/head-cleaner/head-cleaner.php on line 2895
Warning: Invalid argument supplied for foreach() in /サイトのパス/wp-content/plugins/head-cleaner/head-cleaner.php on line 2895
Warning: Invalid argument supplied for foreach() in /サイトのパス/wp-content/plugins/head-cleaner/head-cleaner.php on line 2895
Warning: session_start(): Cannot send session cache limiter – headers already sent (output started at /サイトのパス/wp-content/plugins/head-cleaner/head-cleaner.php:2895) in /サイトのパス/wp-content/plugins/siteguard/siteguard.php on line 153
念のために元ファイルをバックアップしてから作業開始。※コピー.phpはバックアップ用です。
テキストエディタで該当の2895行目を見るとエラー内容の通り、拡張For文で配列を回していました。おそらく外側の拡張For文の「$filters」がnullもしくは配列では無いために、内の拡張For文を回そうとして、エラーが出たのだと思います。
と言う訳で、2895行目の前に配列でなければ読み飛ばす以下の1行を追加しました。
if (!is_array($filters)) continue;
修正後は以下のようになります。
そして、修正したファイルを上げなおしたらエラーは消えました。ただ、プラグイン起因のようなので、プラグインのバージョンが上がると再びエラーが出るかも知れませんね。
コメント
4.7にアップデートして同じ不具合に出くわした者です。
PHPはまったくいじれないので、Head Cleanerを停止して対応しましたが、早く使えるようになりたいと思っていました。
記事のとおりに修正したらエラー表示が消えました。
とても助かりました。ありがとうございました。
お役に立てて光栄です。
PHPは、変数の型が結構曖昧な言語ですので、
こういうエラーが多く困りものですね。