2008年5月09日の投稿
2008-05-09
Ktai Entry 用カスタマイズ例がバグってた
「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 を使っている人が結構多いわけで、こういうフィルター関数を使わなくても付与できるように、コア機能として取り込んだ方がいいのかもしれません。

上に戻る