WordPress MU 1.5 RC1
19 04 2008「WordPress MU Plugin」 の方で「MUの1.5 RC1が出たからPlugin作成者はテストしよーぜ」というアナウンスが流れています。
WordPress MU 1.5は、1.3.3にWordPress 2.5の機能をマージしたバージョンです。
ボクも早めに時間をつくって、Left Handle BLOGSの1.5化をやりたいと思います。
Categories : WordPress MU, プラグイン
「WordPress MU Plugin」 の方で「MUの1.5 RC1が出たからPlugin作成者はテストしよーぜ」というアナウンスが流れています。
WordPress MU 1.5は、1.3.3にWordPress 2.5の機能をマージしたバージョンです。
ボクも早めに時間をつくって、Left Handle BLOGSの1.5化をやりたいと思います。

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には(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は見てません)
WordPress MUの調査は続いています。
MUでユーザーに使ってもらう為のテーマを選ぶ為にいろいろ調べていると、以下のsubversion repositoryのパスが見つかりました。
http://svn.automattic.com/wpcom-themes/
wordpress.comで選べるテーマが全部ここに入ってるんです。
「これは、いいぞ」ってことで、早速checkoutして自分のテスト環境にインストールしてみました。
WordPress MUのwp-includes/wpmu-functions.phpに、get_blog_list()という関数があります。
名前からすると「存在するブログの一覧を取得する」機能と判断できますね。
もちろん、ボクもそう思いました。
しかし、コードをみるとblogsテーブルからselectするSQL文の条件に「public=’1′」 というのが含まれています。
この「public」というフィールドは、通常のWordPressでもおなじみの管理画面における「プライバシー」の状態を指しています。
「プライバシー」は、 「このブログを、検索エンジン (Google、Sphere、Technorati など) とアーカイブサイトを含め、誰でも閲覧できるようにする」かどうかのフラグで、具体的にはheadタグ内にmetaタグのnofollow, noindexを記述するかどうかというモノです。
となると、get_blog_list()内で「public=’1′」でフィルタするってのはなんなんでしょうか?
ソースコードをgrepすると、get_blog_list()は同じwpmu-functions.phpにあるget_most_active_blogs()という関数からのみ呼ばれています。
(get_most_active_blogs()はどこからも呼ばれていない)
う~ん、ナゾは深まるばかりです。
一つだけいえるのは、blogの一覧が欲しければ自分でfetchするしかないってことです。
WordPress MUの「サイト管理 - ブログ」画面のblog一覧も、get_blog_list()は使ってないのですから。
P.S.
この前、Plugin ManagerというMU用のプラグインについて書きました。
Plugin Commanderという別のものも見てみたのですが、どちらも少し「足りない」ので、自分で書くことにしました。
完成したらここで公開しまっす。
MUをいじっていたら、どうも「ユーザー」にはどんな状態があって、なにが許されているのかについて混乱してしまったので、まとめてみました。
(概念上の話です。データベース上、どういう状態がありうるかはまた別の機会に)

photo credit: Alex and Rob
仕事関係で「ネタ蔵のネタ」でもお世話になっているWordpressの中身を研究しています。
今日はWordpressとそのマルチユーザー版Wordpress MUのデータベースの構造をチェック。
インストールして少し使ってみてから、mysqldumpで両方のデータベースをdumpして比べてみました。
最近のコメント