投稿、タクソノミー、タームの関係について確認します。また関連するテーブルについても取り上げます。
目次
用語整理
タクソノミー
( taxonomy 分類種類 )カテゴリ
- 親子階層にできる
タグ
- 親子階層にできない
ターム
( term 分類名称 )- カテゴリ名
- タグ名
例を示します。
タクソノミー
- 地域カテゴリー
ターム
- 東京都, 埼玉県, 茨城県 …
関連テーブル
下記テーブルについて確認します。
テーブル | 概要 |
---|---|
wp_posts | 投稿情報を管理 |
wp_term_relationships | 投稿とタームを紐づけ |
wp_term_taxonomy | タクソノミー情報と紐づくタームを管理 |
wp_terms | タームを管理 |
wp_posts
mysql> SELECT `wp_posts`.`ID`,
-> `wp_posts`.`post_type`,
-> `wp_posts`.`post_name`
-> FROM wp_posts
-> WHERE `wp_posts`.`ID` = 1;
+----+-----------+-------------+
| ID | post_type | post_name |
+----+-----------+-------------+
| 1 | post | hello-world |
+----+-----------+-------------+
1 row in set (0.00 sec)
wp_term_taxonomy
mysql> SELECT *
-> FROM `wp_term_relationships`;
+-----------+------------------+------------+
| object_id | term_taxonomy_id | term_order |
+-----------+------------------+------------+
| 1 | 2 | 0 |
| 1 | 3 | 0 |
| 1 | 4 | 0 |
+-----------+------------------+------------+
3 rows in set (0.00 sec)
wp_term_relationships
mysql> SELECT *
-> FROM `wp_term_taxonomy`;
+------------------+---------+----------+-------------+--------+-------+
| term_taxonomy_id | term_id | taxonomy | description | parent | count |
+------------------+---------+----------+-------------+--------+-------+
| 1 | 1 | category | | 0 | 0 |
| 2 | 2 | category | | 0 | 1 |
| 3 | 3 | post_tag | | 0 | 1 |
| 4 | 4 | post_tag | | 0 | 1 |
+------------------+---------+----------+-------------+--------+-------+
4 rows in set (0.01 sec)
wp_terms
mysql> SELECT *
-> FROM `wp_terms`;
+---------+------------------+------------------------------------------------+------------+
| term_id | name | slug | term_group |
+---------+------------------+------------------------------------------------+------------+
| 1 | カテゴリーA | %e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bca | 0 |
| 2 | カテゴリーB | %e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bcb | 0 |
| 3 | タグA | %e3%82%bf%e3%82%b0a | 0 |
| 4 | タグB | %e3%82%bf%e3%82%b0b | 0 |
+---------+------------------+------------------------------------------------+------------+
4 rows in set (0.00 sec)
結合して表示
投稿に カテゴリーA
タグA
タグB
が紐づいています。
SELECT `wp_posts`.`ID`,
`wp_posts`.`post_type`,
`wp_posts`.`post_name`,
`wp_term_taxonomy`.`taxonomy`,
`wp_term_taxonomy`.`parent`,
`wp_term_taxonomy`.`count`,
`wp_terms`.`name`
FROM `wp_posts`
LEFT JOIN `wp_term_relationships`
ON `wp_posts`.`ID` = `wp_term_relationships`.`object_id`
LEFT JOIN `wp_term_taxonomy`
ON `wp_term_relationships`.`term_taxonomy_id` = `wp_term_taxonomy`.`term_taxonomy_id`
LEFT JOIN `wp_terms`
ON `wp_terms`.`term_id` = `wp_term_taxonomy`.`term_id`
WHERE `wp_posts`.`ID` = 1;
mysql> SELECT `wp_posts`.`ID`,
-> `wp_posts`.`post_type`,
-> `wp_posts`.`post_name`,
-> `wp_term_taxonomy`.`taxonomy`,
-> `wp_term_taxonomy`.`parent`,
-> `wp_term_taxonomy`.`count`,
-> `wp_terms`.`name`
-> FROM `wp_posts`
-> LEFT JOIN `wp_term_relationships`
-> ON `wp_posts`.`ID` = `wp_term_relationships`.`object_id`
-> LEFT JOIN `wp_term_taxonomy`
-> ON `wp_term_relationships`.`term_taxonomy_id` = `wp_term_taxonomy`.`term_taxonomy_id`
-> LEFT JOIN `wp_terms`
-> ON `wp_terms`.`term_id` = `wp_term_taxonomy`.`term_id`
-> WHERE `wp_posts`.`ID` = 1;
+----+-----------+-------------+----------+--------+-------+------------------+
| ID | post_type | post_name | taxonomy | parent | count | name |
+----+-----------+-------------+----------+--------+-------+------------------+
| 1 | post | hello-world | category | 0 | 1 | カテゴリーB |
| 1 | post | hello-world | post_tag | 0 | 1 | タグA |
| 1 | post | hello-world | post_tag | 0 | 1 | タグB |
+----+-----------+-------------+----------+--------+-------+------------------+
3 rows in set (0.00 sec)