Programming

【WordPress】php7.2の環境でエラーが出てくる原因と対策

2018/12/05

先日初めてphp7.2の環境でワードプレスを構築していて、特に何の変哲も無い一般的なワードプレスサイトだったのですが、シングルページなど複数の箇所において

「Warning: count(): Parameter must be an array or an object that implements Countable in [ファイルパス]/wp-includes/post-template.php on line 284」というエラーが出て少し修正に苦労したので備忘録として残しておきます。

なぜWarning: count():のエラーが出るのか

色々調べているとphp7.2では count()関数の仕様に変更があったようで、post-template.phpの記述ではそれに対応できていないようでした。

仕様変更の内容についてはよくわかりません。適当にGoogle先生に聞いてみてください。

post-template.phpを書き換えてあげればエラーは解消されました

エラーの箇所であるpost-template.phpの284行目付近の下記の記述を

// 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;
    }

に書き換えてあげるとエラーは表示されなくなりました。

今回の修正内容・エラーの原因についてはこちらのサイトに詳しく書かれていますので参考にしてください。

いまいちどういう修正を加えられているのかよくわかってません。とりあえずバリバリのプログラマーさんはすごいってことです。