2008年4月15日の投稿

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 以降はまた別の処理にしなければならない??

WordPress は日本語のページスラッグを正しく扱わない

ゆりこ による 13:20:14 の投稿
カテゴリー: WordPressハック

Ktai Style1.3でページの2番目以降が表示されません」という質問があったのですが、調査したところ、「WordPress コアは、ページスラッグを日本語にすると urldecode() した結果を URL とする (==UTF-8文字列な URL を作る) 」ことが分かりました。これは RFC1738 (日本語訳) 違反ですよね〜〜。

投稿スラッグの場合、get_permalink() において %postname% を urldecode() していません。なのに %pagename% ではデコードしているのです。はっきりいって謎な動作です。

とりあえず、チケット #6723 を切って反応を見ることにします。わざわざデコードしているのは何か理由があるはずなので、単純に urldecode() を外せばいいとは思えませんし。

いちおう、get_page_link() にはフィルターフック page_link があるので、このフックで、UTF-8 文字列な URL を検出したら、URL デコードしてない URL を返すようなプラグインを作ればいいかもしれません。それは実質的に、get_page_link(), _get_page_link(),get_page_uri() の丸ごとコピーに近いわけですが ;-)

携帯対応プラグイン Ktai Style バージョン 1.31→配布停止

Ktai Style 画面

絵文字対応の WordPress 携帯対応プラグイン「Ktai Style」のバージョン 1.31 をリリースいたしました。主な変更点は以下の通りです。

  • コメント一覧画面で、コメント投稿者の名前からサイト URL にリンク、もしくはトラックバック・ピンバック元サイト名からサイト URL にリンクするようにしました。
  • コメント編集画面で、端末識別番号を要求したときに取得した端末番号・USIM 番号や契約者IDが見られるようにしました。
  • モードID通知をオフにしている端末に対しては、端末製造番号を要求するようにしました。
  • 権限が作者 (Author) 以下のユーザーで携帯絵文字を使って投稿しても絵文字が出ない問題、および下書きを編集すると「レビュー待ち」になってしまう問題を修正しました。
  • 本文の末尾に <br> のような、開き要素に見える HTML 要素がある場合、空の分割ページができてしまう問題を修正しました。
  • img 要素の alt 要素などで、特定の文字 (「キ」や「業」など) が破壊されてしまう不具合への対応として、WordPress本家の trac #5917 に対するパッチを適用したものに変更しました。
  • ウェブログの文字コードが UTF-8 以外の場合、PC から携帯絵文字を含む投稿・コメントを見たときに文字化けする不具合を修正しました。
  • SoftBank 6-3 シリーズにおいて、見出し要素 (h1 – h6) を div 要素と p 要素の組に変換させるようにしました。
ダウンロード: ktai_style131.tar.bz2 (193.0 KB) → バグりまくっているので配布停止にします。
バージョン1.32をリリースしました。

今回のバージョンアップは、コメント一覧・端末識別番号の処理改善およびバグ修正です。EUC-JP なウェブログでは比較的重大な問題がありますので、ぜひともアップデートをお願いします。

次は、いよいよ自動ログイン・新規投稿時でのファイル添付 (WILLCOM, スマートフォン用) の実装にチャレンジしてみます。ちょっと時間がかかるかもしれません。

[追記] 「コメント一覧」の改善について補足しておきます。初期バージョンでは、外部リンクは一律に削除していたため、コメント一覧での投稿者リンクも削除していました。その後、外部リンクをフルブラウザ経由リンクにしたり、中継ページ経由リンクにしたりと改善したのですが、コメント投稿者リンクに適用するのを忘れていました。今バージョンで、やっと適用されたというわけです。

[追記 2008-04-16] あああ、ページ分割回りがメチャクチャです (まるで分割されていない)。「開き要素に見える HTML 要素がある場合、空の分割ページができる」問題の対処コードでエンバグしてしまっていました。これは重大すぎるので、本日修正版を出します。