WordPressをPHP7.2で使用したらWarning: count(): Parameter…のエラーが出た場合の対処方法

本サイトはアフィリエイト広告を利用しています。

PHPを7.2にアップデートしたら、WordPressでWarning: count(): Parameter must be an array or an object that implements Countable in /home/xxxxx/xxx/public_html/wp-includes/post-template.php on line 284というような表示が出てきた場合の対処方法を書いてみたいと思います。

スポンサーリンク

PHPのバージョン

ページに下記のような表示が出た場合、PHPのバージョンが7.2になっているのではないかと思います。

Warning: count(): Parameter must be an array or an object that implements Countable in /home/xxxxx/xxx/public_html/wp-includes/post-template.php on line 284

このエラーが出る原因は、簡単に言えばPHP7.2でcount()関数の仕様が変更になったからと言うような感じのようです。

テーマのテンプレートを修正

/wp-includes/post-template.phpのコアファイルを修正している記事を見かけますが、この修正のデメリットは更新したらもう一度修正し直しになるということでしょう。
そもそもWordPresssのコアファイルを本当に修正しなければならないのでしょうか?

実際このエラーが表示されない、問題ないテーマも多数ありました。
ということは、テーマの修正で何とかなるのではと思います。

この表示が出るテーマですが、起きている場所はsingle.phpやpage.phpで
いくつか調べてみた程度ですが、<?php the_content(); ?>の表示を外したらエラーが出なくなりました。
そして良く見ると

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

が無い状態だとエラーが起きていました。
なので、single.phpやpage.phpで上記の記事ループの呼び出しが万が一無いようなら、これを入れてその中に
<?php the_content(); ?>
を入れればエラーが出なくなると思います。

基本的にこの命令はだいたいのテーマで入っていますが、テーマによっては違う方法で呼び出しをしているものもあったりします。
違う呼び出し方法で<?phpがスタートしているようなら、それをいったんごっそりと消し、

<!--ループ開始 -->
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
					
<h1><?php the_title(); ?></h1>
<?php the_content(); ?>
・
・
・
<?php endwhile; else: ?>
<p>記事がありません</p>
<?php endif; ?>

といった感じに直してみてください。
Warning: count(): のエラーが出てきた際には、まずは記事ループの命令が入っているか確認してみてください。

コメントをどうぞ