GUIDはpermalinkぢゃない

13 04 2008


Creative Commons License photo credit: ocean.flynn

データベース上でいうと・・・wp_postsテーブルのguidフィールドの話です。
GUIDとしてpermalinkが入っている思うのは、ちょっとした勘違い・・・そうボクもさっきまで勘違いしていたんですがw

多分、正解は・・・

投稿作成時のpermalink構造で作られたpermalinkが入っている。
後にpermalink構造を変更しても・・・または、ホスト名を変更しても、既存投稿のGUIDは置き換えてくれない。

ということだと思います。
まあ、GUIDの本来の意味を考えると、必ず「正しい」permalinkが入っているなんて思うのは間違っているに決まっていますね。

ちなみに、permalinkが欲しければwp-include/link-template.phpのget_permalink()を使うのが正解です。
(WordPress MUの管理機能などを作りこんでいる場合にpermalinkが欲しければ、get_permalink()の前にswitch_to_blog()して、取得してから、restore_current_blog()する)




WordPress MUのkses.phpの問題

13 04 2008

WordPress MUには(WordPressも)、wp-include/kses.phpっていうHTMLフィルター機能が搭載されています。

例えばimgタグやaタグに指定されるURLの正当性をチェックしてくれたりする機能です。

MUで記事を書いていて、aタグのtitle属性に「ブログ」と日本語で書くと、「ロ」の字が文字化けしてしまうという問題にぶち当たりました。
コードを追っかけていくとksesフィルターが化かしていることがわかりました。

このままでは、Left Handle BLOGS全体の問題として残ってしまうので、修正を試みたわけですが・・・

WordPress日本語版作成チームのGoogle Groupsに問題が指摘されていました。
さらに、チームの方がWordPress本家にもレポートしてくれていて、おまけにpatchも作ってくれています(要は、hrefやsrcのデータはフィルタするけど、altやtitle属性はフィルタしないという修正)。

早速、そのパッチをkses.phpに当てて、いろいろ試してみたところなかなかいい具合です。
大きいコミュニティのメリットを感じました。

Left Handle BLOGSにも早速採用です。

ちなみに、WordPress 2.3.3のkses.phpはMUとバージョンが違う為か、「ロ」問題はなかったです。
ただ、「ロ」だけが問題じゃなくて他の文字(エンコード)でも起こり得る話なので、対応したほうがいいと思います。
(WordPress 2.5のkses.phpは見てません)







EURO FOOTBALL JUNCTION | 京都情報ジャンクション | Geoタグつけまっしょい