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 /home/xxxxx/www/wp/wp-includes/post-template.php on line 284

表示では以下のように表示されていました。

エラーが起こる原因

PHPのバージョンが7.2以上のサーバーにおいて発生するようです。

WordPressがサポートしているPHPのバージョンが5.6以上になったこともあり、古いバージョンが使えなくなってきています。

なので、同様のエラーに遭遇している方も多いかと思います。

 

このエラーが出る原因は、PHP7.2で count()関数の仕様が変更になったからだそうです。
特に重大なエラーではなさそうです。

原因となっているコードが書かれているファイルは『post-template.php』というものです。

『post-template.php』のファイルは、レンタルサーバーのファイルマネージャーか、FTPソフトでサーバー内にアクセスしたときに、「wp-inclueds」というフォルダの中に入っています。

└── wp(WordPressのインストールフォルダ)
    └── wp-includes
      └── post-template.php

 

エラーへの対処法

対処法は2つあります。

  1. 『post-template.php』のファイルを編集する
  2. テーマ自体を変える

ただし、1. 『post-template.php』のファイルを編集する、の場合、テーマを更新するたびにファイルが更新されるため、更新のたびに同じエラーが出ます…。

なので、今使っているWordPressテーマに愛着がなければ、2. テーマ自体を変える、というのをオススメします。

『post-template.php』のファイルを編集する

修正箇所に以下のコードをそのままコピペしたら解決します。

修正箇所は、僕の場合は『post-template.php』のファイルの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」は以下のページからダウンロードできます。

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