SHINY DEVIL

[PHP] wordpress-ping-optimizerがWarningを出す場合の修正方法

会社のサイト作成でも WordPress を使っているのですが、ページの更新をするときに頻繁にpingが飛んでしまっては困るので、wordpress-ping-optimizerというプラグインを導入しています。

それまで、PHP5.6.38でサイトを稼働させていましたが、さすがにバージョンが古いままで使い続けるのもどうかと思い、PHP7.2にバージョンアップしたところ、事件が起きました。


スポンサーリンク

サイトにWarningが表示されてる

PHP7.2にアップデートしたのと同時に、たまたまページを更新している人がいて、すぐにWarningが出ていることに気付いてもらえました。「サイトにWarningが表示されてる」と。

Warning: count (): Parameter must be an array or an object that implements Countable in /wordpressインストール先/wp-content/plugins/wordpress-ping-optimizer/cbnet-ping-optimizer.php on line 533

どこかで見たことあるワーニング…。


サポートページを頼ってみた

そう言えば、ちょうど自分のブログでうまくpingが飛んでくれないことがあって、wordpress-ping-optimizerのことを調べていたとき、どこかでこのワーニングを見たような気がする。

さっそくネット検索に頼ってみたところ、WordPressのサポートにありました。

こちらのトピックにあるように、cbnet-ping-optimizer.phpの533行目を修正してアップロードすればOKです。

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

     ↓

$pingCount = $this->cbnetpo_future_pings ? count( $this->cbnetpo_future_pings ) : 0;

上記のように修正したcbnet-ping-optimizer.phpをアップロードしたところ、無事にWarningが消えました。

サポートページのトピックでもコメントされていますが、直後の処理でWordpressのバージョンが2.4以上だったらreturnするようになっているので、$pingCountの中身がどんな数値であっても、この部分の処理に変化はなさそうです。

もっと言ってしまえば、Wordpressのバージョンが2.4以上であるなら、上記書き換えをreturn trueのみにしてしまっても動作的には問題ないかも?(未検証です)

PHPをアップデートする前に一応テストサーバで動作確認はしていたのですが、テストサーバということでwordpress-ping-optimizerはインストールしていませんでした。

こういったプラグインも含め、事前に細かく検証したほうがよい、という教訓ですね。やれやれ(苦笑)←デジャヴ感


初稿:2018年12月15日

スポンサーリンク

この記事をシェア

アカウントをフォロー