WordPress 4.7バージョンアップでエラー表示

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;

修正後は以下のようになります。
そして、修正したファイルを上げなおしたらエラーは消えました。ただ、プラグイン起因のようなので、プラグインのバージョンが上がると再びエラーが出るかも知れませんね。

スポンサーリンク
DQ8-レクタングル大
DQ8-レクタングル大

シェアする

フォローする

スポンサーリンク
DQ8-レクタングル大

コメント

  1. head cleaner ユーザー より:

    4.7にアップデートして同じ不具合に出くわした者です。

    PHPはまったくいじれないので、Head Cleanerを停止して対応しましたが、早く使えるようになりたいと思っていました。

    記事のとおりに修正したらエラー表示が消えました。

    とても助かりました。ありがとうございました。

    • DQeite より:

      お役に立てて光栄です。
      PHPは、変数の型が結構曖昧な言語ですので、
      こういうエラーが多く困りものですね。