会社のサイト作成でも 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のサポートにありました。
「WordPress Ping Optimizer」がPHP7.2でエラーを出す件について
こちらのトピックにあるように、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日
コメント