2008年5月09日の投稿

2008-05-09

Ktai Entry 用カスタマイズ例がバグってた

ゆりこ による 03:20:18 の投稿
カテゴリー: WordPressハック
タグ: ,

Ktai Entry で、画像付きメールを送っても画像が出ない」バグですが、どうやら、「LightBox 用に、rel=”lightbox”属性を追加する」というカスタマイズに提示したコードがバグっていたのが原因でした。大変失礼いたしました。現在は修正しましたが、当初は以下のようになっていました。

function ke_rel_lightbox($html, $id, $size) {
	if (preg_match('/rel=["\']/', $html, $match)) {
		$html = str_replace($match[0], $match[0] . 'lightbox ', $html);
	} elseif (! preg_match('/rel=/', $html)) {
		$html = str_replace('<img ', '<img rel="lightbox"', $html);
	}
}
add_filter('image_link/ktai_entry.php', 'ke_rel_lightbox', 10, 3);

これでは、返り値がないので、フィルターの結果が「空」になってしまいます。return $html; を追加すればよさそうですが、2つ目の str_replace もマズくて、これだと <img rel="lightbox"src="..... のように rel 属性と src 属性が繋がってしまって不正になり、消えてしまいます。置換文字列は '<img rel="lightbox" 'と末尾にスペースが必要です。

カスタマイズ用のコードも一通りテストはしていますが、lightbox 用コードはテストしていなかったんですよね…… (post.php で alt 属性を追加するコードをコピペしたものなので OK と判断したため)。この不具合が多くの人で発生したということは、Lightbox を使っている人が結構多いわけで、こういうフィルター関数を使わなくても付与できるように、コア機能として取り込んだ方がいいのかもしれません。