このエラーが出る原因は、PHP7.2で count()関数の仕様が変更になったからです。特に重大なエラーではありません。
とはいえ、サイトにエラーコードが表示されたままだと邪魔ですよね…。
原因となっているコードが書かれているファイルは『post-template.php』というものです。
『post-template.php』のファイルは、レンタルサーバーのファイルマネージャーか、FTPソフトでサーバー内にアクセスしたときに、「wp-inclueds」というフォルダの中に入っています。
└── wp(WordPressのインストールフォルダ)
└── wp-includes
└── post-template.php
エラーへの対処法は2つ
対処法は2つあります。
- 『post-template.php』のファイルを編集する
- テーマ自体を変える
なので、今使っているWordPressテーマに愛着がなければ、2. テーマ自体を変える、というのをオススメします。
『post-template.php』のファイルを編集する
修正箇所に以下のコードをそのままコピペしたら解決します。
ただし、1. 『post-template.php』のファイルを編集する、の場合、テーマを更新するたびにファイルが更新されるため、更新のたびに同じエラーが出ます…。
修正箇所は、僕の場合は『post-template.php』のファイルの284行目に存在していました。そもそもエラーが出ている行数はエラーコードの中に表示されていると思います。
Warning: count(): Parameter must be an array or an object that implements Countable in /home/xxxxx/www/wp/wp-includes/post-template.php on line 284
Windowsであれば、「Ctrl + F」で『post-template.php』のファイル内を「post_password_required」などの文字で検索すると探しやすいかと思います。
修正前
// If post password required and it doesn't match the cookie.
if ( post_password_required( $post ) )
return get_the_password_form( $post );
if ( $page > count( $pages ) ) // if the requested page doesn't exist
$page = count( $pages ); // give them the highest numbered page that DOES exist
修正後
// If post password required and it doesn't match the cookie.
if ( post_password_required( $post ) )
return get_the_password_form( $post );
if ( ! empty( $pages ) ) {
if ( $page > count( $pages ) ) // if the requested page doesn't exist
$page = count( $pages ); // give them the highest numbered page that DOES exist
} else {
$page = 0;
}
(参考)WordPressでphp7.2にした時にWarning: count()が出た場合の治し方(コピペ可)|株式会社アルラボ
テーマ自体を変える
『post-template.php』のファイルはテーマによって中身が異なるので、テーマ自体を変えることでエラーが起こらなくなる可能性があります。
このサイトでも使用している「Cocoon」というテーマだとエラーは発生していません。
また、「Cocoon」は無料で使える上、SEOにも強いので、愛着のあるテーマがなければ「Cocoon」を試してみるといいでしょう。
なお、「Cocoon」は以下のページからダウンロードできます。