ロード中...

wordpressのプラグイン、head-cleanerのエラーをどうにかしてみた。

先日wordpress4.7が公開されたので、早速アップデートしてみると、今まで重宝していたプラグイン”head-cleaner”でエラーが…。

とりあえず急場しのぎで無理やり解決させたので備忘も兼ねて書いておきます。

”配列が空です!!”って怒られてる

エラーメッセージを見ると以下のような感じ。

Warning:invalid argument supplied for foreach() in~head-cleaner.php on line 2895

どうやら配列が空だよって怒られてるみたいだったので、とりあえず指定されたあたりを見てみると、以下のような記述になっていました。

foreach ($active_filters as $priority => $filters) {
	foreach ($filters as $filter) {
		$function_name = $this->_get_function_name($filter['function']);
		if ( $this->function_enabled($function_name) ) {
			if (!isset($this->filters[$tag]))
				$this->filters[$tag] = array();
			$this->filters[$tag][$function_name] = $priority;
		}
	}
}

【追記】

「上記のコードがある場所が分らない!!」というご質問があったので、以下にご説明します。

  1. 管理画面内の”プラグイン”の項目内の”プラグイン編集”をクリック
  2. 開いた画面にある”編集するプラグインを選択”のプルダウンでhead-cleanerを選択し、選択ボタンを押す
  3. head-cleaner/head-cleaner.phpのソースが表示されるので、上記の箇所を探す。
    (”Get Filters”という項目の中にあります。)

2行目の部分が問題の箇所だったので、以下のようにして配列が空か否かを判別させるようにしてみたところ、エラーもなく、プラグインも動くようになりました。

foreach ($active_filters as $priority => $filters) {
	if(is_array($filters)){
		foreach ($filters as $filter) {
			$function_name = $this->_get_function_name($filter['function']);
			if ( $this->function_enabled($function_name) ) {
				if (!isset($this->filters[$tag]))
					$this->filters[$tag] = array();
				$this->filters[$tag][$function_name] = $priority;
			}
		}
	}
}

上記の変更を参照される場合、万が一動かない箇所があった場合等は、自己責任にてお願いいたします。

早くプラグインアップデートがかかることを祈りつつの応急処置のご紹介でした。

追記(2017/01/19)

head cleanerがバージョンアップされていたので、早速更新し、中身を確認してみました。

foreach ($active_filters as $priority => $filters) {
	if (!is_array($filters)) {
	continue;
	}
	foreach ($filters as $filter) {
		$function_name = $this->_get_function_name($filter['function']);
		if ( $this->function_enabled($function_name) ) {
			if (!isset($this->filters[$tag]))
			$this->filters[$tag] = array();
			$this->filters[$tag][$function_name] = $priority;
		}
	}
}

そうか、continueか。

これなら閉じカッコのつけ忘れもなく条件を追加できますね。

大変勉強になります。

今後のプログラミングに是非生かしたいです。

カテゴリー:NEWS

コメントはこちらから.

Please be assured that your email address will not be published.
Also, the fields with * are required items.

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

私たちも応援しています。

システムブレイン株式会社はアスルクラロ沼津のスタジアムスポンサーです。

外部サイト

当サイトでのブログ公開時、自動的に以下のブログ等に当サイトのブログ記事へのリンクが表示されます。


主な対応可能地域

〔静岡県東部〕
沼津市、三島市、富士市、富士宮市、裾野市、御殿場市、伊豆市、伊豆の国市、熱海市、伊東市、田方郡函南町、駿東郡清水町、駿東郡長泉町、駿東郡小山町

〔その他静岡県下〕
静岡市、浜松市、島田市、磐田市、焼津市、掛川市、藤枝市、袋井市、下田市、湖西市、御前崎市、菊川市、牧之原市、賀茂郡東伊豆町、賀茂郡河津町、賀茂郡南伊豆町、賀茂郡松崎町、賀茂郡西伊豆町、榛原郡吉田町、榛原郡川根本町、周智郡森町

〔その他都道府県〕
日本全国対応可能
※静岡県以外のお客様でお打ち合わせご希望の際は、ご相談ください。

ABOUT US


システムブレイン社屋外観

システムブレイン株式会社
〒411-0903
静岡県駿東郡清水町堂庭238-4
TEL : 055-975-4141
FAX : 055-975-7080
https://www.sysb.co.jp/
instagram公式アカウント:@systembrain4141
facebook公式アカウント:@sysb.web
twitter公式アカウント:@sysb_web

主な業務内容
システム開発、ネットワーク構築、事務機器・事務用品販売、コピー機リース・レンタル、ホームページ制作、パソコンサポート、建築CAD支援

↓