【WordPress】PHP7.2でWordPress Ping Optimizerがエラー(応急処置)

WordPress, PHPWordPressプラグイン, エラーログ

PHP7.2でWordPress Ping Optimizerがエラー

前記事でPHP7.2のスピードテストを確認しておりましたが、エラーが出ていました

PHPエラー内容

count(): Parameter must be an array or an object that implements Countable

パラメータは、配列またはCountableを実装するオブジェクトでなければなりません

PHPエラー場所

cbnet-ping-optimizer.php(533行目)

PHP触ってると、パラメータが数値じゃないとダメとかオブジェクトじゃないとダメとか、たまにみるエラーですかね

さて、PHP7.1で動いてて7.2でエラーという事は7.2での変更点に引っかかってるという事

「WordPress ping Optimizer」は外したくないプラグインなのでなんとかしたいところです

count()のPHP7.2での変更点

PHP: count – Manual

count() will now yield a warning on invalid countable types passed to the array_or_countable parameter.

count()は、array_or_countableパラメータに渡された無効なcountable型に関する警告を出力するようになりました。

「WordPress ping Optimizer」を修正するべきか

そもそも「WordPress ping Optimizer」は過剰なWordPressのPING送信を制御する機能

記事投稿・更新時以外にも動いていたの?ページ表示時になにか機能する意味があるのだろうか

なんとも言えないけど、エラー場所となっている533行目

$pingCount=count($this->cbnetpo_future_pings);

まあ、どうせパラメータ値がおかしいというより、空のパラメータで実行しようとしただけだろうと、とりあえずNULL判定で実行を回避してみる?と思ったけど手前で既にNULLチェックはされてた

「$this->cbnetpo_future_pings」をチェックしたところ中身は「bool(false)」

正常な時の値がわからないのだけど判定に$this->cbnetpo_future_pings === falseを追加しておいた

if (is_null($this->cbnetpo_future_pings) or $this->cbnetpo_future_pings === false){
$pingCount=0;
}else{
$pingCount=count($this->cbnetpo_future_pings);
}

ひとまずエラーは消えましたが、プラグインがアプデされるまでの応急処置ですね

でも「WordPress ping Optimizer」はページ表示時にも読み込んでるとはなー
試しに外したら2クエリ減ったよ、ふーむ