Menu

ワードプレスでカテゴリ追加はmysql上どうなる

ワードプレスで投稿する際に、カテゴリーを追加すると、mysql上どうなるのでしょうか?

wp_term_taxonomyとwp_termsが1行づつ増える。

ワードプレスの管理画面から、投稿の「カテゴリー」を追加すると、mysqlの各テーブルにどの様な変化が現れるのでしょうか?実験してみました。

シェルアカウントを利用して mysql に接続。

mysql> show tables;
+-----------------------+
| Tables_in_ykeyakids   |
+-----------------------+
| wp_commentmeta        |各コメントのメタデータ
| wp_comments           |投稿へのコメント・トラックバック・ピンバックデータ
| wp_links              |リンク作成で入力されたリンク情報
| wp_options            |管理 > 設定で設定されたオプション設定情報
| wp_postmeta           |各投稿記事特有の情報
| wp_posts              |投稿記事、固定ページ、ナビゲーションメニュー
| wp_term_relationships |wp_posts,wp_links,wp_term_taxonomyのカテゴリとの関連付け情報
| wp_term_taxonomy      |投稿とリンクの分類上の語句(カテゴリ・タグ)データを格納 
| wp_termmeta           |各ユーザ特有のユーザ・メタデータ
| wp_terms              |投稿とのカテゴリ分けに使われる語句の基本情報
| wp_usermeta           |ユーザーに関するメタデータ
| wp_users              |ユーザ情報
+-----------------------+
12 rows in set (0.00 sec)

12個しかテーブルがないのなら、何とか理解できるかもしれない・・・。かすかな希望を持つ。

投稿のカテゴリを追加する前に、各テーブルの行数をカウントして、記録しておく。

mysql> select count(*) from wp_commentmeta;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.01 sec)

mysql> select count(*) from wp_comments;
+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from wp_links;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from wp_options;
+----------+
| count(*) |
+----------+
|      152 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from wp_postmeta;
select count(*) from wp_posts;
+----------+
| count(*) |
+----------+
|       61 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from wp_posts;
+----------+
| count(*) |
+----------+
|       35 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from wp_term_relationships; ★
+----------+
| count(*) |
+----------+
|       11 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from wp_term_taxonomy; ★
+----------+
| count(*) |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from wp_termmeta;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from wp_terms; ★
+----------+
| count(*) |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from wp_usermeta;
+----------+
| count(*) |
+----------+
|       20 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from wp_users;
+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

こんなことをやらなくったって、どこかのドキュメントに書いてあるはずですね。探して読むのは面倒なのですが、実験をしながら理解していくのは楽しいので、やっています。

こういう感覚は、いわゆる「自分ルール」って言うやつなのでしょうか? 自分のルールに準じた順序でしか物事を理解できないようです。

では一応、グーグル様に「ワードプレス 各テーブルの役割」とお尋ねしてみたところ、ありました。

データベース関連図
http://wpdocs.osdn.jp/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E6%A7%8B%E9%80%A0

読んでみたところ、なんとなく理解が深まりました。

テーブルの役割から推測すると、下記の3つのテーブルに変化が生じるはずです。
wp_term_relationships(11行ある)、

wp_term_taxonomy(5行ある)、

wp_terms(5行ある)

この行数に注目してテストします。

mysql> select * from wp_term_relationships;
+-----------+------------------+------------+
| object_id | term_taxonomy_id | term_order |
+-----------+------------------+------------+
|         1 |                1 |          0 |
|         6 |                1 |          0 |
|        15 |                2 |          0 |
|        16 |                2 |          0 |
|        17 |                2 |          0 |
|        18 |                2 |          0 |
|        21 |                3 |          0 |
|        21 |                5 |          0 |
|        27 |                1 |          0 |
|        29 |                1 |          0 |
|        32 |                3 |          0 |
+-----------+------------------+------------+
11 rows in set (0.00 sec)

mysql> select * from wp_term_taxonomy;
+------------------+---------+----------+-----------------------------------------------------------------------------------------+--------+-------+
| term_taxonomy_id | term_id | taxonomy | description                                                                             | parent | count |
+------------------+---------+----------+-----------------------------------------------------------------------------------------+--------+-------+
|                1 |       1 | category | まだ設定していない                                                                      |      0 |     0 |
|                3 |       3 | category | コンピュータにかかわる事                                                                |      0 |     0 |
|                4 |       4 | category | ニュース記事への感想を書く場合                                                          |      0 |     0 |
|                5 |       5 | category | 誰かのブログなどを読んでの感想                                                          |      4 |     0 |
|                6 |       6 | category | ワードプレスを使っている際のメモ書きを書き込んでいる投稿。                              |      3 |     0 |
|                7 |       7 | category | レストラン、お店、観光地などの体験を元にしたレビュー                                    |      0 |     0 |
+------------------+---------+----------+-----------------------------------------------------------------------------------------+--------+-------+
6 rows in set (0.00 sec)
★wp_term_taxonomy に記事のカテゴリが格納されている



mysql> select * from wp_terms;
+---------+-----------------------------------+-----------------------------------------------------------------------------------------------------+------------+
| term_id | name                              | slug                                                                                                | term_group |
+---------+-----------------------------------+-----------------------------------------------------------------------------------------------------+------------+
|       1 | 未分類                            | %e6%9c%aa%e5%88%86%e9%a1%9e                                                                         |          0 |
|       2 | メインメニュー                    | %e3%83%a1%e3%82%a4%e3%83%b3%e3%83%a1%e3%83%8b%e3%83%a5%e3%83%bc                                     |          0 |
|       3 | コンピュータ                      | %e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf                                              |          0 |
|       4 | ニュースの感想                    | %e3%83%8b%e3%83%a5%e3%83%bc%e3%82%b9%e3%81%ae%e6%84%9f%e6%83%b3                                     |          0 |
|       5 | 誰かの記事を読んだ感想            | %e8%aa%b0%e3%81%8b%e3%81%ae%e8%a8%98%e4%ba%8b%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a0%e6%84%9f%e6%83%b3 |          0 |
+---------+-----------------------------------+-----------------------------------------------------------------------------------------------------+------------+
5 rows in set (0.00 sec)

slugって何?taxonomyって何?等々、疑問が発生してしまいますが、とりあえずこのまま進める事にします。

mysql> select * from wp_terms;
+---------+-----------------------------------+---------------+------------+
| term_id | name                              | slug          | term_group |
+---------+-----------------------------------+---------------+------------+
|       1 | 未分類                            | uncategorized |          0 |
|       3 | コンピュータ                      | computer      |          0 |
|       4 | ニュースの感想                    | thoughts      |          0 |
|       5 | 誰かの記事を読んだ感想            | quotes        |          0 |
|       6 | ワードプレス                      | wordpress     |          0 |
|       7 | レストランの感想                  | reviews       |          0 |
+---------+-----------------------------------+---------------+------------+
6 rows in set (0.00 sec)

管理画面に行き、「ワードプレス」というカテゴリを追加してみます。

新規カテゴリーを追加
名前 < ワードプレス

サイト上に表示される名前です。
スラッグ < wordpress

“スラッグ” は URL に適した形式の名前です。通常はすべて半角小文字で、英数字とハイフンのみが使われます。
親カテゴリー < コンピュータ

タグとは異なり、カテゴリーは階層構造を持つことができます。たとえば、ジャズというカテゴリーの下にビバップやビッグバンドという子カテゴリーを作る、といったようなことです。これはオプションです。
説明 < ワードプレスを使っている際のメモ書きを書き込んでいる投稿。
この説明はデフォルトではあまり重要な意味を持ちませんが、これを表示するテーマも中にはあります。
独り言 何だよ、重要な意味がないの?

で、新規カテゴリーを追加

さて、mysqlに戻って、先ほどのテーブルの内容を表示してみます。

mysql> select * from wp_term_relationships;
+-----------+------------------+------------+
| object_id | term_taxonomy_id | term_order |
+-----------+------------------+------------+
|         1 |                1 |          0 |
|         6 |                1 |          0 |
|        15 |                2 |          0 |
|        16 |                2 |          0 |
|        17 |                2 |          0 |
|        18 |                2 |          0 |
|        21 |                3 |          0 |
|        21 |                5 |          0 |
|        27 |                1 |          0 |
|        29 |                1 |          0 |
|        32 |                3 |          0 |
+-----------+------------------+------------+
11 rows in set (0.00 sec)

mysql> select * from wp_term_taxonomy;
+------------------+---------+----------+-----------------------------------------------------------------------------------------+--------+-------+
| term_taxonomy_id | term_id | taxonomy | description                                                                             | parent | count |
+------------------+---------+----------+-----------------------------------------------------------------------------------------+--------+-------+
|                1 |       1 | category |                                                                                         |      0 |     4 |
|                2 |       2 | nav_menu |                                                                                         |      0 |     4 |
|                3 |       3 | category |                                                                                         |      0 |     2 |
|                4 |       4 | category |                                                                                         |      0 |     0 |
|                5 |       5 | category |                                                                                         |      0 |     1 |
|                6 |       6 | category | ワードプレスを使っている際のメモ書きを書き込んでいる投稿。                              |      3 |     0 |
+------------------+---------+----------+-----------------------------------------------------------------------------------------+--------+-------+
6 rows in set (0.00 sec)

mysql> select * from wp_terms;
+---------+-----------------------------------+-----------------------------------------------------------------------------------------------------+------------+
| term_id | name                              | slug                                                                                                | term_group |
+---------+-----------------------------------+-----------------------------------------------------------------------------------------------------+------------+
|       1 | 未分類                            | %e6%9c%aa%e5%88%86%e9%a1%9e                                                                         |          0 |
|       2 | メインメニュー                    | %e3%83%a1%e3%82%a4%e3%83%b3%e3%83%a1%e3%83%8b%e3%83%a5%e3%83%bc                                     |          0 |
|       3 | コンピュータ                      | %e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf                                              |          0 |
|       4 | ニュースの感想                    | %e3%83%8b%e3%83%a5%e3%83%bc%e3%82%b9%e3%81%ae%e6%84%9f%e6%83%b3                                     |          0 |
|       5 | 誰かの記事を読んだ感想            | %e8%aa%b0%e3%81%8b%e3%81%ae%e8%a8%98%e4%ba%8b%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a0%e6%84%9f%e6%83%b3 |          0 |
|       6 | ワードプレス                      | wordpress                                                                                           |          0 |
+---------+-----------------------------------+-----------------------------------------------------------------------------------------------------+------------+
6 rows in set (0.00 sec)

となっていました。

変化を見てみます。

11、5、5だったのが、
11、6,6となっています。

と言うことは、新しく投稿のカテゴリを追加すると、wp_term_taxonomyとwp_termsが1行づつ増える。
といえるのではないか?と思えます。

検証

念のため、その他のテーブルの行数に影響が出ていないか、カウントだけ取ってみます。
予想通り、その他のテーブルの行数に変化はないので、とりあえず 言える と結論付けたいと思います。

wp_term_taxonomy
+------------------+---------+----------+-----------------------------------------------------------------------------------------+--------+-------+
| term_taxonomy_id | term_id | taxonomy | description                                                                             | parent | count |
+------------------+---------+----------+-----------------------------------------------------------------------------------------+--------+-------+
|                6 |       6 | category | ワードプレスを使っている際のメモ書きを書き込んでいる投稿。                              |      3 |     0 |
+------------------+---------+----------+-----------------------------------------------------------------------------------------+--------+-------+

wp_terms
+---------+-----------------------------------+-----------------------------------------------------------------------------------------------------+------------+
| term_id | name                              | slug                                                                                                | term_group |
+---------+-----------------------------------+-----------------------------------------------------------------------------------------------------+------------+
|       6 | ワードプレス                      | wordpress                                                                                           |          0 |
+---------+-----------------------------------+-----------------------------------------------------------------------------------------------------+------------+

※他のテーブルのデータに変化が出たかどうかは検証していません。
なぜかって? それは「大体でいいでしょ。」という精神から来ています。ハードに書き込んでしまうプログラムでも無いし、大体で良いいよ。スピード重視がモットーだからで~す。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です