PHPのバージョンを7.2以上にしたら、『WordPress Ping Optimizer』でエラーが発生したのでその対処方法をご紹介。
発生したエラーはこちら。
ブログのトップページや記事の上部に見慣れない文言が並んでいます。
Warning: count (): Parameter must be an array or an object that implements Countable in /●●●●/●●ユーザー名/●●ドメイン/●●フォルダ名/wp-content/plugins/wordpress-ping-optimizer/cbnet-ping-optimizer.php on line 533 |
詳しいことはわからないのですが、何やらWordPressに設定している「WordPress Ping Optimizer」というプラグインでエラーが発生したことが分かります。
さらによく見ると「cbnet-ping-optimizer.php on line 533」とあり、PHPファイルの533行目が原因のようです。
というわけで、この533行目を何とかすればエラーが解消されることが分かりました。
さてここからどうすべきか?
PHPに詳しくないので困っていたのですが、調べてみるとWordPressのフォーラムで全く同じエラーの相談がありました。
しかも回答を確認すると、分かりやすく解決方法が記載されています。
fa-angle-double-right関連記事:「WordPress Ping Optimizer」がPHP7.2でエラーを出す件について | WordPress.org
そこで回答に従い533行目を指定のコードに変更したら、無事エラーが改善されました。
今回はこのWordPressのフォーラムで紹介されていた解決方法を、少しだけ補足する形で紹介します。
PHPの編集に詳しい方は、上記関連サイトを見ていただければ簡単に解決すると思います。
目次からジャンプ
『WordPress Ping Optimizer』PHP編集前の注意事項
今回のエラーはプラグインのPHPを直接編集します。
PHPの編集はミスってしまうと、データが壊れてしまったり最悪ブログが真っ白になったり、WordPressにログイン出来なくなることさえあります。
そのためPHPの編集前には、必ずWordPressのデータをバックアップしてください。
どんなに簡単な編集でもバックアップ必須です。
逆にWordPressのバックアップ方法やリカバリーの方法が分からない場合は、PHPの編集は避けるべきです。
とりあえず「WordPress Ping Optimizer」を一旦「停止」してエラーを解除後に、バックアップ方法やリカバリー方法をマスターしてからPHP編集されることを強くお勧めします。
エックスサーバー限定となりますが、こちらで「WordPressを手動でバックアップする方法がエックスサーバーなら驚くほど簡単【迷わずできる】」バックアップ方法の解説をしていますのでよければ合わせてご参照ください。
「WordPress Ping Optimizer」でPHPのエラーが出た場合の対処方法
※下記の対処方法は「WordPress Ping Optimizer」の【バージョン 2.35.1.0.0】まで改善されることを確認しています。
まずは一度プラグインを停止して、「WordPress Ping Optimizer」がエラーの原因であることを確認しましょう。
WordPressのメニューから「プラグイン編集」⇒編集するプラグインを選択から「WordPress Ping Optimizer」を選択してください。
下記サイトの回答に記載されたコードで533行目を変更しましょう。
※【バージョン 2.35.1.0.0】まで。【バージョン 2.35.1.1.0】以降はエラー対策がされておりPHPの修正は不要です。
fa-angle-double-right関連記事:「WordPress Ping Optimizer」がPHP7.2でエラーを出す件について | WordPress.org
【変更前】
$pingCount=count($this->cbnetpo_future_pings);
【変更後】
$pingCount = $this->cbnetpo_future_pings ? count( $this->cbnetpo_future_pings ) : 0;
533行目を変更後のコードにしたら「ファイルを更新」してください。
※データのバックアップはしましたか?稀に「ファイルを更新」ボタンを押したあとにエラーとなることがあるので注意!
「WordPress Ping Optimizer」を有効化して、エラーが改善されていることを確認しましょう。
『WordPress Ping Optimizer』PHP編集後の注意事項
最後にPHPを編集後の注意点。
まず今回の対処方法は、フォーラムで回答されている方も書いていますがあくまで「応急処置」です。
そのため完全な解決には、プラグインのアップデートを待つしかないです。
ちなみに「WordPress Ping Optimizer」は、2019年5月に「バージョン 2.35.1.0.0」にバージョンアップしましたが、その際には残念ながら改善されていませんでした。
プラグインのPHPを直接編集しているため、「WordPress Ping Optimizer」がアップデートされるたびにリセットされ再度対応が必要になります。
プラグインがアップデート後、エラーが発生している場合には改めて該当箇所を確認しましょう。
またアップデート後は、今回ご紹介した方法では改善されない場合もありますのでご注意ください。
※「WordPress Ping Optimizer」の【バージョン 2.35.1.0.0】まで改善されることを確認しています。
それ以上のバージョンでは確認しておりませんので予めご了承ください。
エックスサーバー利用者限定となりますが、「WordPress Ping Optimizer」利用しながら「Xアクセラレータ Ver.2」にしたい場合は対応必須です。
「Xアクセラレータ Ver.2」はサイトを高速化させる有難い機能なのですが、利用条件としてPHP7.2以上となります。
そのためPHP7.1以下で「WordPress Ping Optimizer」を利用していれば、必然的にエラーが発生してしまいますね。
まとめ
PHPのバージョンを7.2以上にすると発生する、『WordPress Ping Optimizer』のエラーを改善する方法について紹介させていただきました。
実はこのエラー、プラグインがアップデートしたら改善しないか少し期待していたのですが、2019年5月のアップデートでは残念ながら改善されていませんでした。
Ping送信を制御するプラグインとしてとても優秀なので、できればこのまま利用していたいのですが、バージョンアップのたびに対応が必要なら少し考えないといけないですね。
PHPの編集はリスクが伴いますし、いつまでこの方法で対応できるかも分かりません。
正直Google Search Consoleでインデックス登録をすれば、Ping送信は不要なんじゃないかと思っているので、思い切ってPingの送信先を削除してしまうのが一番の解決策なんじゃないかと・・・・。
(参考:新しいGoogle Search ConsoleでURLのインデックス登録をリクエストする方法【新サチコでもFetch as Google】)
PHP編集がどうしても怖い方は、選択肢としてありだと思います。
2019年7月のアップデート【バージョン 2.35.1.1.0】では、エラーが発生しないことを確認しました。
PHPファイルを確認したところ、内容が少し変更されているようです。
詳細を確認したわけではありませんが、どうやらエラー部分について修正対応をしていただいたようでありがたい!
今後はアップデートの度に、危険なPHPの修正をしなくてもよさそうです。
この記事については、念のためしばらく公開のままにしておこうと思います。