2008年4月21日の投稿

2008-04-21
晴れ

メール投稿プラグイン制作ちう

ゆりこ による 14:01:27 の投稿
カテゴリー: WordPressハック
タグ: , , ,

先日制作開始したメール投稿プラグインですが、MTA からのプッシュ型 (wp-mta タイプ) では一通り動くようにはなりました。メールを POP で取りに行く方 (wp-shot スタイル) はまだテストしていません。

wp-mta はサムネール作成を自前で行なっていましたが、今回は完全に WordPress コアに任せることにしました。しかし、WordPress 2.0.x では、サムネールサイズが決め打ちで、フィルターによる変更も無理なため、WordPress コアのサムネール作成コードをコピペして取り込み、サイズ可変にしました。なお、画像の保存場所も wp-content/uploads/ ディレクトリーになります (wp-mta は独自の保存場所だった)。

で、問題は WordPress 2.5 でのメディア処理です。添付画像を XHTML として挿入するのは、新設の wp_get_attachment_link() を使うことにしましたが、これが結構凶悪で、img 要素に alt 属性をつけないのです!! WordPress コアが wp_insert_post() するときに alt 属性を補完してくれますが、それは空の内容になってしまいます。となると、Ktai Style による携帯電話表示では、画像が見えなくなってしまいます (画像の alt 属性が空だと画像を隠す仕様のため)。むりやり alt 属性を補完しないといけないようです……。

気になるのは、メディアライブラリーの「投稿に挿入」ボタンで作った画像 XHTML と、 wp_get_attachment_link() をデフォルト引数で作った XHTML では微妙に内容が違うことです。前者だと、img 要素の class 属性に “wp-image-NNN” (NNN は画像の post ID) が付与されますが、wp_get_attachment_link() を直接呼んだときにはつきません。メディアライブラリーは wp_get_attachment_link() とは違う API を使っているのかも??

[追記] その通りで、wp-admin/includes/media.php では get_image_send_to_editor() というのがあって、これは wp-includes/media.php の get_image_tag() を呼んでいます。これは alt 属性対応で、”wp-image-NNN” も追加します。こっちを使った方がいいかな??