WordPressで「Warning: count(): Parameter must be an array or an object that implements Countable」が出たときの原因と対処法

WordPressの管理画面やサイトの表示を更新した直後に、画面の上部に見慣れない警告文が表示されて驚いたことはありませんか。「Warning: count(): Parameter must be an array or an object that implements Countable in ~」というメッセージは、WordPressの利用者が比較的よく遭遇するエラーのひとつです。

見た目は深刻なエラーのように見えますが、原因の多くはPHPのバージョンとコードの相性によるもので、仕組みさえ理解すれば落ち着いて対処できます。この記事では、このWarningが表示される理由と、状況別の具体的な対処法をわかりやすく解説します。

スポンサーリンク

「Warning: count(): Parameter must be an array or an object that implements Countable」とは

このWarningは、PHPのcount()という関数に、配列でも「Countable」というルールに対応したオブジェクトでもない値(多くの場合はnull)が渡されたときに表示されます。

Warning: count(): Parameter must be an array or an object that implements Countable in /(サーバーのパス)/wp-includes/post-template.php on line 293

PHPはバージョンアップのたびに仕様が見直されており、PHP 7.2以降では、この書き方をしているコードに対してこうした警告が表示されるようになりました。さらにPHP 8以降では、警告ではなく処理が止まってしまう「致命的エラー(Fatal error)」として扱われるようになっています。

つまりこのWarningは、WordPress本体・テーマ・プラグインのいずれかに含まれるPHPコードが、サーバー側のPHPバージョンに対応しきれていないサインだといえます。

エラーメッセージの読み方

対処の第一歩は、エラーメッセージに書かれている「どのファイルの何行目で発生しているか」を確認することです。メッセージの最後のほうに記載されているファイルパスを見れば、原因がどこにあるのかおおよそ見当がつきます。

  • /wp-includes/ または /wp-admin/ を含むパス:WordPress本体(コア)のファイルが原因
  • /wp-content/themes/ を含むパス:使用中のテーマが原因
  • /wp-content/plugins/ を含むパス:インストール中のいずれかのプラグインが原因

どこが原因なのかを把握できれば、次に紹介する対処法のうち、どれを優先して試せばよいかが見えてきます。

原因別の対処法

WordPress本体(コアファイル)が原因の場合

「post-template.php」など、wp-includes内のファイルが表示されている場合、WordPress本体のコードが原因です。WordPress 5.1ではこのcount()関連の不具合が一時的に発生していましたが、後継のアップデートで修正済みです。WordPress本体・テーマ・プラグインをすべて最新バージョンに更新することで、解消されるケースがほとんどです。

ここで注意したいのは、コアファイルを直接書き換えて応急処置をする方法です。一時的にはエラーが消えても、次回のWordPress本体の更新時に編集内容がすべて上書きされ、元の状態に戻ってしまいます。コアファイルの直接編集は、トラブルの原因にもなりやすいため避けましょう。

テーマ・プラグインが原因の場合

「/wp-content/themes/」または「/wp-content/plugins/」を含むパスが表示されている場合は、使用中のテーマや、いずれかのプラグインのコードが原因です。該当するテーマ・プラグインを管理画面から最新版に更新することで解消する場合が多くあります。

更新しても改善しない場合は、プラグインを一つずつ無効化して表示を確認し、どのプラグインが原因かを特定します。原因のプラグインが見つかったら、開発者へ問い合わせるか、同じ機能を持つ別のプラグインへの乗り換えを検討するとよいでしょう。長期間更新されていないテーマ・プラグインは、こうした不具合が起こりやすいだけでなく、セキュリティ面のリスクも高くなるため注意が必要です。

サーバーのPHPバージョンが原因の場合

レンタルサーバーの管理画面では、サイトごとに使用するPHPのバージョンを変更できることがほとんどです。サーバー側でPHPのバージョンを上げた直後にこの警告が出るようになった場合は、PHPのバージョンアップがきっかけになっている可能性が高いといえます。

応急処置として、PHPのバージョンを一つ前に戻すと警告が消えることもあります。ただし、サポート期間が終了した古いPHPバージョンを使い続けることは、セキュリティ上のリスクにつながります。根本的な解決のためには、テーマやプラグインを新しいPHPバージョンに対応したものへ更新していくことをおすすめします。

同様のエラーを防ぐために日頃からできること

こうしたPHP関連の警告やエラーは、日頃のメンテナンス次第である程度防ぐことができます。

  • WordPress本体・テーマ・プラグインを定期的に最新バージョンへ更新する
  • 更新前には必ずバックアップを取得しておく
  • 可能であればステージング環境(テスト用サイト)で動作確認をしてから本番サイトに反映する
  • サーバーのPHPバージョンを変更する前に、使用中のテーマ・プラグインの対応状況を確認する

表示速度やセキュリティの面でも、PHPのバージョンや本体・プラグインの更新状況は大きく関わってきます。サーバー選びに迷っている方は、PHPバージョンの管理がしやすく、WordPressの動作環境としても定評のあるエックスサーバーのような高速サーバーを検討してみるのもおすすめです。

まとめ

「Warning: count(): Parameter must be an array or an object that implements Countable」というメッセージは、PHPのバージョンと、WordPress本体・テーマ・プラグインのいずれかのコードとの相性が原因で表示されます。最後にこの記事のポイントを振り返ります。

  • エラーメッセージのファイルパスから、原因が「コア」「テーマ」「プラグイン」のどれかを確認する
  • WordPress本体が原因の場合は、本体・テーマ・プラグインを最新版に更新する
  • コアファイルの直接編集は、更新時に上書きされるため避ける
  • テーマ・プラグインが原因の場合は、該当するものを更新するか乗り換えを検討する
  • PHPバージョン変更が原因の場合は、対応状況を確認しながら更新を進める

表示が乱れたり警告が出たりすると不安になりますが、落ち着いて原因を切り分ければ対処できるケースがほとんどです。心配な場合は、無理に自己流で修正せず、レンタルサーバーのサポートやテーマ・プラグインの開発者に相談するのも一つの方法です。

このテーマの関連記事はこちら