ただいまWordPressを構成しているDBについて、勉強しています。
ちょっとやりたいことがありまして、「そもそもどうなってんだろうな~」と、気になってしょうがないので・・・
興味は・・・ある方少ないかもしれません、めちゃくちゃお暇でしたらご覧ください。
まず、WordPressをインストールしたら、どんなテーブルが作成されるのか
WordPressのインストール直後の、まったくまっさらの状態。プラグインも何も有効化していない状態。
そんな状態では、下記の12個のテーブルが作成されていると思います。(2016/01/16更新:WordPress4.4.1の場合。)
※「xxxxxx_」の部分はWordPressインストール時に決めた「接頭辞」です。
- wp_xxxxxx_commentmeta
- wp_xxxxxx_comments
- wp_xxxxxx_links
- wp_xxxxxx_options
- wp_xxxxxx_postmeta
- wp_xxxxxx_posts
- wp_xxxxxx_terms
- wp_xxxxxx_termmeta
- wp_xxxxxx_term_relationships
- wp_xxxxxx_term_taxonomy
- wp_xxxxxx_usermeta
- wp_xxxxxx_users
ずらっとありますね。ずらっとあるだけで、たいしたことないです。
今回はこの中のひとつ、「wp_xxxxx_commentmeta」テーブルについて、中身を見てみました~。
「wp_commentmeta」テーブルに入っているもの
早速ですが「wp_commentmeta」テーブル内には、
- meta_id
- comment_id
- meta_key
- meta_value
と、合計4つのフィールドがあります。
meta_idは一意で自動採番、comment_idはmeta_key,meta_valueと紐付けるものとして、それぞれデータが入っています。
ここを自分が理解するため、もっと具体的に書きます。じゃないと私自身が忘れてしまうんで・・・
例えば下の例のような感じです。
同じcomment_idに対して、meta_key,meta_valueが紐つけられている
こんな仕組みなんだなぁ~、と理解を済ませたところで、これまで私がブログを運営している中で、どんなデータが蓄積されていったのか。
ちょっと調べました。
Akismetプラグイン関連のデータ
WordPressのコメントスパムを判別してくれる有名なプラグイン「Akismet」に関するデータが入っていました。
「meta_key」に入っているデータとしては、
- akismet_user
- akismet_history
- akismet_result
- akismet_as_submitted
でした。また、例えばある「akismet_history」の「meta_value」を覗いてみると、以下のようにakismetがコメントをどう処理したのか、って情報が入っていました。
a:4:{s:4:"time";s:13:"xxxxxxxxx.xx";s:7:"message";s:50:"Akismet はこのコメントを破棄しました";s:5:"event";s:9:"check-ham";s:4:"user";s:0:"";}
akismetプラグインで「スパムコメントと判断したんで、破棄しましたよ~」って書いてくれていますね。
Disqusプラグイン関連のデータ
私はある時期まで、disqusのコメントシステムを利用していました。ですので、下のようなdisqus関連のデータが「meta_key」に入っていました。
- dsq_post_id
- dsq_parent_post_id
具体的なデータ「meta_value」は、数桁の数字が入っているものと、空欄のもの。disqusのシステムとさらに紐づいている、と考えるのが自然でしょうかね。
今回は深く調べる必要ないかな、と思ったのでここまでって感じです。
livefyreプラグイン関連のデータ
またまたこちらも、以前はコメントシステム「livefyre」を利用していましたんで、
- livefyre_cmap_12345678
- livefyre_amap_123123123
といったデータが「meta_key」に入っていました。
livefyreは、twitter,facebookページでの言及まで取得して表示できるという、とてもよいものだったんですが・・・人気なのか、動作が非常に重い。なので、泣く泣くはずしました。
こちらもdisqus同様、「meta_value」は、livefyreのシステムと紐づいていると理解するのがいいっぽいですかね。
既に使用していないので、追及はここまで。
ただ、仕組みは面白いので後ほど解析できればな・・・と思っています。
Jetpackプラグインの「コメント」関連のデータ
jetpackプラグインのコメントを利用してコメントすると、下記のデータが「meta_key」に入るようです。
例として、「hc_post_as」には
- jetpack
- wordpress
と、以上のデータが入っていました。これは、「コメントする際にどのアカウントでコメントをしたのか」という情報の元になるものでしょうね。
下の画像のように、どのアカウントでコメントをするか選択しますよね。
jetpackプラグインでコメントを入れるとき
というわけで、この「hc_post_as」を含めると、
- hc_post_as
- hc_avatar
- hc_foreign_user_id
- hc_wpcom_id_sig
のデータが入っていました。
具体的に例えば、「hc_post_as」で「facebook」の値が入っていた場合。「hc_avater」はfacebookのgraph apiで取得されたアイコン画像のURLが入っていました。
2015/12/25追記:「hc_」の接頭辞の意味はなに?
Jetpackのコメントシステムは「highlander-comments」を利用しているので、接頭辞が「hc_」ってことなのかな、と、ひとまず理解しました。
コメントをゴミ箱に入れたときのデータ関連
コメントをゴミ箱に入れる事で作られるデータのようです。
- _wp_trash_meta_status
- _wp_trash_meta_time
これ、よくわからなかったので、実際にやってみました。
例えばゴミ箱にコメントを入れると、「_wp_trash_meta_time」には10桁のUNIXタイムスタンプがデータとして入ります。
さっき、コメントをテストでゴミ箱に入れてみました。すると、「1358758791」という10桁の数字が入りました。
この10桁の数字をわかりやすい時刻に変換すると、
2013/01/21 17:59
となります。なるほど~って感じですね。
まとめ
ここまででわかったのは、
- WordPressをインストールすると、まず12個のテーブルが作成される。
- テーブルの1つ「wp_xxxxx_commentmeta」テーブルには、4つのフィールドがあって
- 今まで使用したコメントシステム等々の情報や、ゴミ箱に移動した時のステータスなどのデータが入っている
ということでした。
もちろん、この「wp_xxxxx_commentmeta」に入っているデータは、皆さんそれぞれWordPressを構築している環境によって違うと思いますが、こうやって少しずつですが理解していくと「なんだ~、そんなに構えることないじゃない」って思えたりもします。
この調子で次のテーブルも理解していきたいですね。
DBを好きに操るのも近い将来だな!と手ごたえは感じてます。
このページを共有する