WordPress Ping Optimizerのエラー表示 533行目の解決方法

WordPress Ping Optimizerのエラー表示 533行目の解決方法

WordPressのプラグイン「WordPress Ping Optimizer」が以下のエラーを出してくれました。

 

Warning: count (): Parameter must be an array or an object that implements Countable in /home/shusait/shu-sait.com/public_html/wp-content/plugins/wordpress-ping-optimizer/cbnet-ping-optimizer.php on line 533

 

PHPバージョン7.2でよくおこるエラーのようです。

 

WordPress Ping Optimizerエラー内容

 

 

WordPress Ping Optimizerがエラーになり画面で表示さてる内容については、エラーが発生してるファイルまでの経路と、実際に不具合が発生してるcount()関数の部分が不具合の原因ですよ。と英語表示されてます。

英語が間違ってたらイヤなので必殺の翻訳くんに頼みます。

 

エラーは533行目で発生している

 

 

エラー表示翻訳結果

Warning:count()パラメータは/home/shusait/shu-sait.com/public_html/wp-content/plugins/wordpress-ping-optimizer/cbnet-ping-optimizer.phpでCountableを実装する配列またはオブジェクトでなければなりません533行目

 

翻訳、最高かよ…

 

エラー表示に書いてる533の意味は533行目のことなので、エラーの発生場所も533行目なことが分かります。

けっきょくWordPress Ping Optimizerのエラー表示の内容に書いてあることは、WordPress Ping Optimizerの中のファイル「cdnet.ping-optimizer.php」の533行目の記述、count()関数の配列またはオブジェクトじゃないから修正して解決してくださいということです。

と言われても、ぼんやりとしか分かりませんが、まずはエラー表示された不具合の場所に行かないことには解決できないので、いざ。

 

 

Advertisement

 

 

533行目の不具合の場所

 

WordPress Ping Optimizerのファイル、cdnet.ping-optimizer.phpの533行目で発生してる不具合の場所を確認。

 

/home/ドメイン/public_html/wp-content/plugins/wordpress-ping-optimizer/cbnet-ping-optimizer.php

 

 

 

 

それぞれのサイト上部に表示されたエラー内容に書かれてるWordPress Ping Optimizerのパスを見て「cdnet.ping-optimizer.php」まで進みます。

FTPや使用してるサーバーからcdnet.ping-optimizer.phpをダウンロードしてcdnet.ping-optimizer.phpを開き533行目を絞り込む。

すると、ありますね今回のエラー表示されたWordPress Ping Optimizerがエラー表示してたcount()が。

 

WordPress Ping Optimizerエラー解決方法

 

作業する前は必ずバックアップを取ります。

問題の不具合場所のコメントも見ちゃいます。

 

Checks if time elasped for future post, and if so, removes post form the ping list and pings
For wordpress versions below 2.4

 

翻訳の結果

将来の投稿に時間が経過したかどうかチェックし、もしそうであれば、投稿をpingリストから削除してpingを実行します。ワードプレスのバージョンが2.4以下の場合

 

そして

 

エラー533行目の上の処理のコメント

// handle null before count
if (is_null($this->cbnetpo_future_pings))
$pingCount=0;

 

//handle null before count

 

翻訳の結果

カウント前にnullを扱う

 

boolenの型の変数をis_nullでは判定できないということをどっかで読んだ記憶があります。

WordPress Ping Optimizerのエラー個所でエラー前はnullかどうかのチェックも兼ねてたけど、PHPバージョン7.2からは、その機能ができなくなったのだと思います。

 

解決方法に使う修正コード

 

解決方法に使う修正コードは下記です。

サポートフォーラムが大変に役立ちましたとさ。

 

解決前

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

 

533行目の上記の解決前の記述から下記の解決後の記述と差し替えます。

 

解決後

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

 

この場合の記述は応急処置みたいなものらしいです。

 

参考 「WordPress Ping Optimizer」がPHP7.2でエラーを出す件について

 

三項演算子を使ってる感じですかね。(理解不足)

 

cdnetpo_futuer_pingがtureの場合のみカウントを取得、それ以外は0とする。すぐ下のif文にて0以下の該当にあたりそれ以降の処理はおこなわないのでエラーにならずに処理を抜けます。

 

 

Advertisement

 

 

WordPress Ping Optimizerエラー原因の理解

 

エラーの解決はしたけど、ある程度はエラーが何故おきたのかエラー原因を理解しておきたいです。

 

Warning:count():パラメータは/home/shusait/shu-sait.com/public_html/wp-content/plugins/wordpress-ping-optimizer/cbnet-ping-optimizer.phpでCountableを実装する配列またはオブジェクトでなければなりません533行目

 

そもそもエラーのときにcount()のパラメータが上手く処理でなくなってしまった。ことから不具合が始まりました。

これについてはPHPバージョン7.2で、プラグイン「WordPress Ping Optimizer」がエラーを出すようになったのでPHP:countを確認したところ、PHP7.2からは以下の変更があったようです。

 

バージョン7.2.0

count()は、array_or_countableパラメータに渡された無効な加算型について警告するようになりました。

 

参考 PHP count 変更履歴

 

countの引数に配列、もしくはカウントすることができるオブジェクトでなければいけないので、そのためwarningが表示されてしまいます。

細かすぎることは理解できてないですが、ざっくりとcount関数で使ってる引数(パラメーター)がPHP7.0のバージョンの変更によってWordPress Ping Optimizerのプラグインのエラー箇所のcount関数の引数が対応できてない書き方だったことが原因で不具合が発生してということ。

 

そして解決したことでエラー部分の直下の変数のpingcountが0より少ないか等しい(>=2.4)場合であれば値に関係なく処理を抜ける(return)ため、$pingcountの値による処理への影響はない。

エラー直下のif文で処理を見逃してくれるみたいな感じでしょうかね。

 

WordPress Ping Optimizerは必要なのか

 

WordPress Ping Optimizerのエラー表示を消すために不具合の箇所を修正して解決しましたが、よくよく考えてみるとWordPress Ping Optimizerのプラグインは必要なのか?と考えてみました。

WordPress Ping Optimizerの重要性は理解できています。

 

関連 WordPress Ping Optimizerの設定とPing送信のスパム対策の関係性

 

ですがブログの更新頻度も低すぎないし、クロール数も少なくない。

インデックス登録もURL検査とサイトマップを使えばいいだけだし、WordPress Ping Optimizerの重要性といえば、ping送信のムダ打ち防止のためなので、その重要性もローカル環境や他のツールで下書きするのでping送信ムダ打ちがなくなりました。

WordPress Ping OptimizerはWordPress5.2との互換更新がありましたが、必要なのか考えた結果そろそろWordPress Ping Optimizerをやめようと思ってるところです。

WordPressプラグインカテゴリの最新記事