WordPressの一部プラグイン、テーマで発生するWarning: count()を解消したい

WordPressのプラグイン「AddQuicktag」をインストール後に新規投稿ページで以下のWarningが表示されてしまいました。

Warning: count(): Parameter must be an array or an object that implements Countable in /home/xxx/xxxx.xxxx/public_html/wp-content/plugins/addquicktag/addquicktag.php on line 230

調べてみると二つほど解決方法がありましたので書き残しておきます。

その1 エラーを吐いてるソースファイルの箇所を修正してあげる

悪影響はないんじゃないかと思っていますが、一応ソースに手を加えるので自己責任でお願いします。

このエラー文は「関数count()の引数に設定する変数は配列かオブジェクトにしてもらえませんかね」と言っています。
ちなみにcount()は配列の要素数を数えたりするのに使います。PHP以外にもよくあるやつですね。
PHP: count – Manual

エラー文の通り、230行目の条件式に少し加えます。

if ( 1 < count( $options[ 'buttons' ] ) ) {
                          ↓
if ( is_array ( $options[ 'buttons' ] ) && 1 < count( $options[ 'buttons' ] ) ) {

どんな処理を書き加えたかというと
count()が処理される前に、count()の引数に設定する変数が配列なのかを先に判定させました。
is_array()という関数が、変数が配列なのかを判定してくれます。
PHP: in_array – Manual

ちなみにオブジェクトかどうかも判定したいときは、is_object()という関数があります。
is_object – PHP.net

私はこれでエラーが出なくなりました。

その2 AddQuicktagで登録してあげる

単純にAddQuicktagでタグを一つも登録していなかったのがいけなかったみたいです。
一つでも登録すれば直るんじゃないかと思います。(試してない)

どうやらこのcount()のWarningですが、PHP7.2になってから他のプラグインやテーマでも出てるみたいですね…。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です