ノウハウ

【解決】WordPressでエラー「Warning: count(): Parameter must be an array or an object that implements Countable in ~ on line 〇〇」が出る場合の対処法

まちゅの
まちゅの
こんにちは、まちゅの(@kimamachuno)です!

このブログはWordPressで作っているんですけども、なぜかちょいちょい「Warning: count(): Parameter must be an array or an object that implements Countable in ~ on line 〇〇」というエラーメッセージが、ブログの上部に表示されてたんですよ_(:3 」∠)_

前にもこのエラーメッセージが出てきてやっとの思いで直したのに、今日見たらまた出てたんですよね…_(:3 」∠)_

Sponsored Link

このエラーメッセージが出る理由

それで調べてみたら、プログラマーの方の専門用語だらけで意味ワカラン記事ばかり出てきて途方にくれてたんですけども、やっと「そういうことだったのか( ºωº )!!」と納得のいく記事を発見しました。

それがこちら⬇️

こちらの記事によりますと、「Warning: count(): Parameter must be an array or an object that implements Countable in ~ on line 〇〇」というエラーメッセージは、WordPressのバージョンが更新されるたびに出るのだそうです。

このエラーメッセージが出る原因は、WordPressがサポートしているPHPのバージョンが5.6以上になって古いバージョンが使えなくなったことと、「PHP7.2で count()関数の仕様が変更になった」からだそうです。このエラーメッセージはPHP7.2以上で出るそうなんですが、なぜ数字が大きい方が古いのかはプログラミングがわからないわたしにはわかりませんwww

まちゅの
まちゅの
このブログのサーバー(Xserver)のPHPを確認してみたら、たしかに7.3でした

ちなみにわたしの場合「Warning: count(): Parameter must be an array or an object that implements Countable in /home/machuno/machulog.com/public_html/wp-includes/post-template.php on line 317」と出ました。

これはFTPソフトを開いてサーバーにログインしたあと、「home」の中の「machuno」の中の「machulog.com」の中の「public_html」の中の「wp-includes」の中にある「post-template.php」というファイルの、317行目にエラーがあるよ!っていう意味らしいです。

この「post-template.php」というファイルの317行目を直せば解決するわけなのですが、わたしはこの作業を以前にもやったのに、また出たので意味がワカランと思ってたんですが、WordPressのバージョンが更新されるたびに「post-template.php」のファイルも勝手に書き換えられてしまうため、更新されるたびに自分で直さないとまたエラーメッセージが出るということだそうです…めんどくさ_(:3 」∠)_w

解決方法

で、具体的にどうすればいいかといいますと、

①サーバーから「post-template.php」をダウンロードする

FTPソフトでサーバーにログインして、さきほどの「この場所にエラーがあるよ!」と出ていた「post-template.php」のファイルを探し、パソコンにダウンロードします。

②エラー箇所を見つける

ダウンロードした「post-template.php」をテキストエディタまたはワードパッドで開き、エラーメッセージで出ていた「on line 〇〇(〇〇行目という意味)」の場所を見つけます。

③エラー箇所を修正する

エラーメッセージに書いてあった行を見てみると

修正前

// 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」があった場所にアップロードします(元々の「post-template.php」は削除するか、新しいのに上書きする)。

これでエラーが修正されて、エラーメッセージは消えているはずです!

 

WordPressのバージョンが更新されるたびにコレをやらなきゃいけないと思うとめちゃくちゃ面倒ですが、仕方ないですね_(:3 」∠)_

Sponsored Link

COMMENT

メールアドレスが公開されることはありません。