PHP7.2更新でWordPress Ping Optimizerが count() エラーを出す
PHP を 7.2 にバージョンアップすると、Wordpress のプラグイン「WordPress Ping Optimizer」で次のようなエラーが出ます。
Warning: count(): Parameter must be an array or an object that implements Countable in /home/<user name>/<site url>/public_html/wp-content/plugins/wordpress-ping-optimizer/cbnet-ping-optimizer.php on line 533 |
サイトが表示できなくなるような致命的エラーではありませんが、ブラウザに表示されるため、見た目がよろしくありません。
この記事では、このエラーの解消方法を説明します。
その前に WordPress Ping Optimizer は必要?
WordPress は、記事を投稿したときに「新しい記事を書いたよー」ということを外部のPingサーバーに Ping を送信して通知します。
Ping を送信することで、ブログ検索サイトへのインデックスが早くなったり、新着記事として被リンクが作成されたりと、SEO的に効果があるといわれています。
つまり、多くのユーザーがブログを見てくれるようになる(かもしれない)のです。
ところが、記事の投稿だけでなく、下書きを保存したり、既存の記事を更新したりするときにも、Wordpress は Ping をうちます。
「下書き書いたよー」「投稿したよー」「記事を更新したよー」「更新したよー」「したよー」と何度も通知を繰り返すので、スパムと判断されてしまい、逆に評価が下がってしまうリスクがあります。
「WordPress Ping Optimizer」は Ping の回数を最適化して、スパム扱いされることを防ぐプラグインです。
Ping を送信するためではなく、むしろ送信しないようにするプラグインです。
さて、ここで疑問にぶちあたりました。

適切にPingを送信すると、ほんとにSEO的に効果があるの…?
この疑問に、簡潔に答えてくれているサイトがありました。
結論から言うと、バズ部ではPING送信は不要だと考えている。
理由は3つある。第一の理由は、設定してもしなくても、さほどサイトのインデックススピードやランキングに変化はなかったからだ。第二の理由は、日本のブログランキングサイトなどのブログを見ていると、明らかに質の低いものが多いからだ。第三の理由は、PINGサーバーは、突然サービスが停止するものも多いので、いちいちチェックするのも面倒だからだ。
引用:WordPressインストール後すぐやっておきたい6つの初期設定(バズ部)
送信しまくるのは良くないと思って WordPress Ping Optimizer を使っていましたが、Ping 自体が必要なのかどうかまでは調べていませんでした。
このエラーをきっかけに、筆者は Ping をやめました。
それに、Google での検索インデックスを狙うなら、Fetch as Google で直接 Google にリクエストした方が確実でしょう。
エラーを解消する方法に比べると、WordPress Ping Optimizer と Ping を止める方法は簡単です。
- WordPress Ping Optimizer プラグインを「停止」します。
- 「設定」→「投稿設定」を開きます。
- 『更新情報サービス』に記述されているURLをすべて消して(空白の状態)、「変更を保存」します。
WordPress Ping Optimizer のエラー解消方法
WordPress Ping Optimizer のエラーを解消するには、プラグインファイルを直接編集する必要がありますので、操作を間違えるとサイトが表示できなくなる等のリスクもあります。
また、本サイトで試した際にはエラーが消え、問題もありませんでしたが、実行に際してはご自身の判断と責任でお願いします。
操作に不安のある方には、前項の Ping を送信しないようにする設定をおすすめします。
- WordPress Ping Optimizer プラグインを「停止」します。
- 「プラグイン」→「プラグイン編集」を開きます。
- 『編集するプラグインを選択』で「WordPress Ping Optimizer」を「選択」します。
- 『プライグインファイル』から「cbnet-ping-optimizer.php」を選びます。
- 選択したファイルの内容が表示されるので、533行目付近にある
$pingCount=count($this->cbnetpo_future_pings);
を以下のように書き換えます。
$pingCount = $this->cbnetpo_future_pings ? count( $this->cbnetpo_future_pings ) : 0;
- 「ファイルを更新」をクリックします。
- WordPress Ping Optimizer プラグインを「開始」して、エラーが消えたことを確認します。
修正内容については、WordPress.org サイトに、このエラーに関するプラグイン作者の投稿がありますので、そちらもご参考ください。
それではまた、機会があれば。