狂骨プラグインで発生する画像参照エラーの解決方法

ワードプレスの管理画面にログインする度に、狂骨(CazyBone v0.5.2)プラグインで下記の画像のような404エラーが発生していた。

cazybone404error-1

URLエンコードされているのでデコードしてみることにする。


デコードしたところ、このURLが

http://ドメイン名/wp-content/plugins/crazy-bone/images/flags/不明.png

であることがわかった。画像名が日本語に変換されてしまい、404エラーが発生しているようだ。

不明.pngの正しい画像名は何なのだろうか?

wp-content/plugins/crazy-bone/images/flags/の中を見ると、unknown.pngとうファイルが見つかった。

「恐らくこれが正しい画像ファイル名なのでは!?」

404エラーを回避するために、プラグインのファイルを修正することにした。
wp-content/plugins/crazy-bone/plugin.php538行目に定義されているget_country_flag()関数を修正すればいいようだ。

	public static function get_country_flag($ip, $class = '', $show_country_name = false) {
	list($country_name, $country_code) = self::detect_country($ip); // <-----①

		$icon_dir = plugins_url('images/flags/', __FILE__);
		$style    = 'width:16px;height:11px;';

		return self::icon_img_tag($icon_dir.strtolower($country_code).'.png', "{$country_name} ({$ip})", "{$country_name} ({$ip})", $style, $class).
			($show_country_name ? "&nbsp;{$country_name}" : '');
	}

①の箇所にある、self::detect_country($ip)の返り値である$country_codeとう変数に注目する。どうやら本来、unknownとなってて欲しいところが不明となっているところが原因のようだ。そこで次のように修正することにした。

	public static function get_country_flag($ip, $class = '', $show_country_name = false) {
		list($country_name, $country_code) = self::detect_country($ip);

        if($country_code == '不明'){ // <-----②
            $country_code = str_replace('不明','unknown', $country_code);
        }

		$icon_dir = plugins_url('images/flags/', __FILE__);
		$style    = 'width:16px;height:11px;';

		return self::icon_img_tag($icon_dir.strtolower($country_code).'.png', "{$country_name} ({$ip})", "{$country_name} ({$ip})", $style, $class).
			($show_country_name ? "&nbsp;{$country_name}" : '');
	}

②のifブロックが追記した箇所だ。不明という名前をunkownに置換している。

これでCazyBoneの404エラーは表示されなくなった。


執筆者:カニ
年末年始で追い詰められた家計を3キロで1000円のパスタが救った。
褒美としてパスタを主食に昇格させる事にしよう。

関連記事一覧

  1. この記事へのコメントはありません。