attachement APIタグの投稿

2008-04-15
晴れ

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

ゆりこ による 00:46:47 の投稿
カテゴリー: WordPressハック
タグ: , ,

以前構想した新メール投稿プラグインですが、ぼちぼち制作を開始することにしました。拙作の wp-mta が、キーワードタグ非対応なことと、画像回転時に EXIF が落ちる (このため、GPS 位置情報も欠落する) のが不便なのですが、それに対応させるならば、新プラグインを作るべきだろうという考えからです。

難航しているのが、WordPress 2.1 から採用された attachment API の使用です。API を使うこと自体は簡単なのですが、ちょっと難儀な問題があります。wp_insert_attachment() には投稿 ID が必要なので、先に wp_insert_post() を行う必要があります。すると、投稿本文に画像を配置する (img 要素を入れる) ためには、以下のどちらかの手段を取ることになります。

  • 画像ファイルを先に upload ディレクトリーに保存してから、そのファイルへリンクした img 要素を生成して投稿本文を作成 → wp_insert_post() → 各画像を wp_insert_attatchment()
  • テキストだけで投稿本文を生成して wp_insert_post() → 画像を切り出して保存、かつ wp_insert_attachment() する → wp_update_post() 等で、投稿本文に img 要素を入れる

いずれにせよ、ちょっと複雑な処理になります。データベースアクセスを減らすためには、前者の実装の方がよさそうですが、画像ファイル格納と wp_insert_attachment() の実行タイミングがずれることと、attachment 型式での画像 URL にリンクできない (画像本体ファイルへのリンクのみとなる) のが問題です。実は、Ktai Style では、今後、画像は attachment 型式で呼び出すことを推奨しようと思っていて、そのためには、新メール投稿プラグインでもそうした方がよいです。attachment 型式の場合、画像を画面サイズに合わせて縮小させたり、元のページに戻るリンクを付けるなどの工夫が可能ですから、携帯電話には適しています。

となると、データベースアクセスが増えるものの、後者の実装しかなさそうですね……。その方向で進めてみることにします。

で、新プラグインですが、性懲りもなく PHP5 専用の予定です。画像回転時に EXIF を再生成しようと思っていますが、そのために PHP Exif Library を使おうと考えていて、これが PHP5 専用なためです。今どき PHP4 のサーバーは少ないですよね;-) と、PEL の配布サイトを確認すると「新メンテナー募集」になっていました。これじゃあ PEL 使うのはよした方がいいのかも……。

[追記 2008-04-16] メール投稿ヘルパー「MobG」の作者によると「WordPress 2.5 は添付ファイル画像の処理が大幅に更新されている」らしいので、新メール投稿プラグインも対応を検討しないといけませんね……。今のところ、WordPress ME 2.0.x には、WP コアの attachment 処理を丸コピー、WordPress 2.1 以降は attachement API を使用という方向でしたが、WordPress 2.5 以降はまた別の処理にしなければならない??