WP: WordPress 2.3 タグ付け機能まとめ&情報募集
WordPress 2.3 でコアに実装される「タグ付け」機能について、詳細をまとめていくページを作りました。
情報募集
- 実際に開発版を試されている方、ソースコードを読める方から、生情報をいただけたらありがたいです。コメントでもトラックバック等でも結構です。
- まとめページに直接情報を書き込んでみたいという方には、ps*wiki の編集アカウントをご用意できます。ぼの宛てにご連絡ください。
- 本当は、日本語版 Codex にページを作ってみんなで情報を書き込んでいけたらいいなあと思っています。Codex にこういうページを作るのって、どうでしょう。。だめかな。。
質問募集
その他に、この機能ついて知りたいことはありますか?
このアンケートフォームかコメント欄で教えてくださいー。まとめページに書いていないことでも、書いてあることの詳細についてでも構いません。
変更 アンケートフォームは、キャッシュ等がからんで、複数投票が上手く出来ませんでした。ごめんなさい!
9.23 時点で次のようになっていました。
- 日本語を使える?: 4
- is_tag(): 1
- タグアーカイブ用テンプレート: 0
- 複数タグを選んでアーカイブを表示できる?: 0
- タグ別フィード: 1
追記
9.23:
- 情報をいただいたこと・確認できたことは、まとめページに追記しましたので、ご覧ください。
(bleuさん、naokiさん、情報ありがとうございますー。
) - あとは引き続き調査中+情報募集中です。
- 知りたい項目がありましたら、コメント欄に気軽に書き込んでください。
- 情報をくださる場合は、情報の信頼性に関わるので、なるべくお名前(ハンドル)とウェブサイト URL を記入していただけるとありがたいです。
9.24:
- 新しいタグ管理プラグイン「Tag Managing Thing」が公開されました。 (・∀・)
Ultimate Tag Warrior の作者 Christine さんによる第2弾。Advanced Tag Entry にも編集・削除機能がありますが、こちらは専用管理画面で、機能もさらにパワフルっぽいです。
「関連プラグイン」に概要付きで載せておきました。レビュー募集中ですー。



insomniaque :
September 22nd, 2007 at 1:24
WP 2.3 のタグ周り…
ぼのさんがタグ付け機能 - ps*wikiにて WP 2.3 のタグ機能のまとめページを作成されています。情報募集中ということなので分かる限りで調べてみました。
ちなみ (more…)
naoki :
September 22nd, 2007 at 16:49
はじめまして。naokiと申します。
プラグインの動作などでお世話になっております。
TAG情報を集めていると言うことで、2.3のTAGの情報を知っている限り書かせていただきますね。
今回書かせて頂く情報は
・WordPress2.3RC1で試した。
・僕はコアファイルまでは読めなかったため、
実際にTAGを入力したのとMySQLのテーブルから見た情報。
//もし間違いなどがあればご指摘ください・・。
結論から書きますと、今回のTAGはそのままでは日本語は使えないようです。
TAGのスラッグの付け方がURLエンコードしてくれないので、そのため問題が生じるようです。英語なら少し試した程度ですが問題なくDBに入力されていました。
//以下はTAGとDBのテーブルの情報です。
2.3ではカテゴリーの情報が入っているDBのテーブルの構成が変わっているのですが、TAGの情報もそのカテゴリーが入っている「terms」、「term_relationships」、「term_taxonomy」のテーブルに入っています。
そして、今回日本語に関しての問題が生じるのは「terms」テーブルにTAGの情報をインサート(追加)した時のようです。
「terms」テーブル:
日本語に関しての問題は、日本語でTAGを入力した場合、slugフィールドのところがURLエンコードされないでterm_idがそのまま入ってしまいます。
そして、どうやらエントリーの投稿時にTAGを入力した場合、今までそのTAGを使用したかどうかをslugフィールドで見てるみたいなので(←これは推測です)、slugがterm_idで入力されている場合、(term_idは同じ値がないために)たとえ以前使用したTAGを入力したとしても同じTAGと認識されないみたいです。
なので、同じ(日本語の)TAGを入力しても、同じ名前のTAGがいっぱいできちゃいます。
あとTAGと関係ないですがslugフィールドの設定が「UNIQUE」(同じ文字は認められない)となっているため、今までそれぞれ違うカテゴリーに同じスラッグをつけている方は要注意です。
解決策?
TAGをDBに書き込むときのコアソースがどこにあるのかわからなかったので推測なのですが(すみません)、
日本語に関しては、TAGをDBに書き込むときURLエンコードなどができればいいかと思います。
1.TAG入力
2.日本語(マルチバイトを含む文字列)の場合、スラッグをURLエンコード
3.「terms」テーブルのslugフィールド内に無かったか調べる。
4.無ければTAGを新しく追加
という感じでできれば日本語でもできると思います。
TAGを入力時のHookがあれば、プラグインで対応できるんですが。もしなければコアファイルに直で書き込まなければならないのかな~。それはイヤだな・・。
ぼの :
September 24th, 2007 at 3:40
>bleuさん
わざわざ調べてくださってありがとうございます。
知りたかったことがたくさん載っていて、ありがたかったですー!
実際の表示なども拝見しつつ、まとめページに載せさせていただきました。
あとで bleuさんの記事にコメントしに伺いますね。
またお気づきのこととかがありましたら、教えてください。
>naokiさん
はじめまして。こんにちはー。情報の書き込みありがとうございます。
日本語タグが使えるかは、個人的にも一番気になる部分なので、詳しく書いてくださってうれしかったです。スラッグは UTW にはなかったので、ちょぴっと期待しているところでもありました。
上でトラックバックをくださったbleuさんの「insomniaque」で、記事に付けたタグリストの URL がアルファベットの小文字やエンコード後の文字列になっていたので、スラッグが使われているのかなあと思っていました。
でも、slug フィールドに term_id が入るのでは、使えないですね。パーマリンク生成時にタグ名から変換してるのかな。。ううーむ。
いくつか確認したいことがでてきて RC1 をインストールしてみたので、私の方でも見てみますね。
<解決策
手修正やプラグインでスラッグを更新することも考えられるので、
3. の存在チェックは、入力したタグ名と term 名(name)とを比較した方がいいかもしれませんね。それで、なければ terms に追加(2.のエンコードは 4.のときに)、みたいな感じで。。
naoki :
September 25th, 2007 at 1:41
ぼのさん、こんばんは。
先のコメントで日本語が使えないと書いてしまいましたが間違っていました。
すみません。
bleuさんのところで日本語のTAGができていたので、もう少し調べてみましたらどうやら、「MT Style Post Name」というプラグインが原因だったようです。
MT Style Post Nameプラグインは、「タイトルから英数字、ダッシュ、アンダーバーのみ抜き取ってスラッグにする」もので、Hookにsanitize_titleが使われています。もしかしたらこのHookが原因だったかもしれません。
//コード
add_filter(’sanitize_title’, ’sanitize_title_numalpha_only’, 9);
function sanitize_title_numalpha_only($title) {
return preg_replace(’/[^%a-zA-Z0-9 _-]/’, ”, $title);
}
(ちなみにこのプラグインのコードは2chのWordpressスレッドで書かれたものです。)
もう少し調べてから書くべきでした。
ぼのさんならびに僕の書き込みを読んでくださった方申し訳ございませんでした。
ぼの :
September 26th, 2007 at 2:03
naokiさん、こんにちはー。さらに調べてくださってありがとうございます。
私の RC1 でも、日本語タグを入力したときに、terms テーブルの slug フィールドにエンコード後文字列が格納されていることを確認しました。
「MT Style Post Name」プラグインのことは、akaさんが記事にしてくださっていました。
:: plasticdreams :: » ポストスラッグ要らない っていう人向けのプラグイン
全部日本語だと ID が入るんですね。
sanitize_title は、そういえばタグを調べていたときにソースで見かけました~!(でも、どこで見かけたかは早くも忘れてしまったぼの。。orz)
MT Style Post Name プラグインユーザにとって大切な情報ですし、調べるきっかけにもなって、naokiさんの書き込みはやっぱりありがたかったですよー。なので、気にしないでくださいね。コアの動作をみたいときは、できるだけデフォルト状態にしておくといいですよね。(^-^)
どうもありがとうございました。
また情報とかレビューとかありましたら、教えてくださいー。
ぼの :
October 5th, 2007 at 22:55
naokiさんに教えていただいた
の部分、うちでも現象を確認しました。
・UTW からインポートしたタグ「アップグレード」の slug を「upgrade」に修正。
・新規投稿で「アップグレード」タグを付ける。(プラグインは使わず)
これで、新規に term(name:アップグレード、slug:URLエンコード)が作られて、過去の「アップグレード」タグ(upgrade)を付けた投稿と別タグ扱いになっています。
(新規投稿) http://bono.s201.xrea.com/tag/%e3%82%a2%e3%83%83%e3%83%97%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%89/
(過去分) http://bono.s201.xrea.com/tag/upgrade/
WordPress(slug:wordpress) と wp2.3(wp23) は大丈夫でした。
後でソースを見てみますー。