【WordPress】WARNING: COUNT(): PARAMETER MUST BE AN ARRAY… が表示された時の対処法

WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE INを消せない人はいませんか?

WordPressサイトで「WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN」がヘッダーの下等に表示されてレイアウトが崩れたりして困っている方で以下の様なお悩みをお持ちの方の参考になると思います。

原因が全く分からない

「WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN」が表示されてしまったけど、なぜ表示されたのか理由が全く分からない。

どうやって表示を消したらいいのか分からない

何となくPHPの問題だろうな!?というのは分かったけど、どうやって「WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN」を消したらいいのかまではわからない。

 

はじめになぜ「WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN」が表示されたのか?少し解説をした後に具体的な消す方法を解説していこうと思います。

スポンサードサーチ

なぜWARNING: COUNT():~が表示されるのか?

それでは、なぜ「WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN」が表示されるのかを解説していこうと思います。私もPHPをはじめとするプログラミングは得意では無いのでわかる範囲でいこうと思います。

PHPをバージョンアップした際に発生しやすい

この警告文が発生するタイミングは、PHPのバージョンを6系から7.2系以上にバージョンアップした際に発生するといわれています。

なので、最近レンタルサーバーのコントロールパネルなどでPHPのバージョンアップを行った場合は、これがきっかけで発生した可能性がありますね。

 

少し話が脱線しますが、皆さんはどちらのレンタルサーバーを使っていますか?

私は、エックスサーバーをメインサーバーとして使っているのですが、もし今使っているレンタルサーバーが思うようなパフォーマンスが出ていない!とお悩みの方がいらっしゃたら、こちらの記事をどうぞ。

エックスサーバーが大幅増強!契約するなら今しかない 2020年5月版
国内最速レンタルサーバーのエックスサーバーが大幅増強されました。データベース数やメモリ数が大幅増強されたので解説します。エックスサーバーの評判も掲載していますので、参考にしてください。

function.phpのコードに問題がある

この警告文が発生するタイミングはお伝えしましたが、じゃあどのテンプレートファイルが原因なのか?というと主にfunction.phpファイルが原因の可能性が高いです。

function.phpファイルは、WordPressの各テーマ内に必ず入っていてこのファイル内のどこかの記述が原因で警告文が出る可能性が高いと思います。実際に私もこのfunction.phpファイル内の記述が原因で警告文が出ていました。

どうやらcount()に問題があるらしい

では、function.phpファイル内のどの記述が原因かというと「WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN」と警告文が表示されている内容を読み解くと冒頭の「 COUNT()」というコードがあると思います。そうですこの「 COUNT()」が原因となります。

ですので、この箇所を変更して警告文を消す方法を紹介していこうと思います。

WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN を消す方法

それでは、実際に「WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN」を消す方法を紹介していこうと思います。

できるだけわかりやすく説明するために順番に読み進めていただければと思います。

私のWordPressサイトで発生したWARNING: COUNT(): PARAMETER…はこんな感じ

私が運営するWordPressサイトで表示された警告文はこちらです。

WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE

WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN /HOME/(サーバ名)/(ドメイン)/(階層1)/(階層2)/WP-CONTENT/THEMES/(テーマ名)/FUNCTIONS.PHP ON LINE 86

WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN /HOME/(サーバ名)/(ドメイン)/(階層1)/(階層2)/WP-CONTENT/THEMES/(テーマ名)/FUNCTIONS.PHP ON LINE 88

この2つの警告文がヘッダー下に表示されました。

そこで私が実際に対処した解決方法を紹介していきます。

文章形式で見る「WARNING: COUNT(): PARAMETER MUST~」の解決方法

ある日サイトを確認すると、ヘッダーの下に以下の警告文が表示されていました。

WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN /HOME/(サーバ名)/(ドメイン)/(階層1)/(階層2)/WP-CONTENT/THEMES/(テーマ名)/FUNCTIONS.PHP ON LINE 86

WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN /HOME/(サーバ名)/(ドメイン)/(階層1)/(階層2)/WP-CONTENT/THEMES/(テーマ名)/FUNCTIONS.PHP ON LINE 88

何かおかしな変更したかな?と思いながら、コードを読み解くと、テーマ内のfunction.phpの82行目と84行目の何か問題発生した事がわかりました。

そこで、function.phpの82行目と84行目を確認すると共通した以下のコードを発見。

$position = count($ancestors)

なるほど…なんとなく状況が理解できたので、上記コードを以下に変更しました。

$position = is_countable($ancestors)

念のため、function.php内に同じコードが無いか確認した所、他に2ヶ所あったので変更しました。

それから、「ファイルを更新」を押して、サイトを確認すると「WARNING: COUNT(): PARAMETER MUST BE AN ARRAY OR AN OBJECT THAT IMPLEMENTS COUNTABLE IN」は消えて解決できましたとさ。

 

簡潔では有りますが、こんな感じで解決できました。

フロー形式で見る「WARNING: COUNT(): PARAMETER MUST~」の解決方法

それでは、順を追って解決方法を紹介します。

  1. 表示された「WARNING: COUNT(): PARAMETER MUST~」からどのテンプレートファイルの何行目で警告が発生しているかを特定する
  2. 特定したテンプレートファイルの該当行数を確認する
  3. count(***)となっているコードを見つける
  4. count(***)をis_countable(***)へ変更する
  5. 他に該当箇所が無いかを確認し、もし有れば同じように変更する
  6. 「ファイルを更新」を押して「WARNING: COUNT(): PARAMETER MUST~」が消えているのを確認する
  7. 完了

先程お話しした私の対処方法とあわせて読んでいただければ、より理解していただけるかなと思います。

is_countableで解決しなかった場合はissetで解決するかも!?

この問題を解決するために調べていたのですが、もし「count(***)をis_countable(***)へ変更する」方法で解決しなかった場合は、「count(***)をisset(***)へ変更する」方法で解決するかもしれませんので、こちらも参考にしてみてください。

スポンサードサーチ

WordPressで不具合はつきもの

私の経験上ですが、WordPressで不具合はつきものなのでこの不具合とはサイト運営する上では必ず乗り越えなければならないものです。皆さんもおわかりだとは思います。

しかし、全世界に存在するWEBサイトの35%程がWordPressで作成されていると言われているので、解決方法もわりと見つけやすいのも事実です。困ったときは、お互い協力して乗り越えていきましょう。

ただし、自分でも少しづつでもいいので、知識を蓄えることも大事ですよね。私も独学ですが、少しづつ勉強している途中です。もし同じように独学で少しづつ学んでいくのであれば以下の様なWordPress関連の書籍もおすすめなので、興味がある方はのぞいてみてください。

WordPress自体についてもっと詳しくなりたい方

WordPressの扱いがまだまだ初心者の方やもっと勉強したい方は向けです

WordPressプラグインについてもっと詳しくなりたい方

WP Multibyte PatchのようなおすすめのWordPressプラグインをお探しの方向けです

 

最後までお読みいただきありがとうございました。

タイトルとURLをコピーしました