- 実践 WordPress ホーム
- 開発者向け
- WordPress の内部
WordPress のデータベース構造
WordPress でウェブサイトやブログを運用する際に欠かせないのが MySQL (または MariaDB )のデータベースです。 ここでは WordPress が利用するデータベースのデータベース構造について解説します。
WordPress 本体が作成して利用するデータベーステーブルは 11 個あります。
ここではテーブル名のプリフィックス(接頭辞)は wp_
としていますが、これはサイトをインストールするときにカスタマイズ可能です。
一覧表
分類 | テーブル名 | 説明 |
---|---|---|
ユーザー関連 | wp_users |
ユーザー情報を管理します。 |
wp_usermeta |
ユーザーに付随する追加のデータを管理します。 | |
投稿関連 | wp_posts |
投稿、固定ページ、カスタム投稿タイプなどのデータを管理します。 |
wp_postmeta |
投稿に付随する追加のデータを管理します。 | |
用語関連 | wp_terms |
用語のデータを管理します。 |
wp_termmeta |
用語に付随する追加のデータを管理します。 | |
wp_term_taxonomy |
用語の種類を表す情報を管理します。 | |
wp_term_relationships |
用語と投稿の関係を管理します。 | |
コメント関連 | wp_comments |
コメントのデータを管理します。 |
wp_commentmeta |
コメントに付随するデータを管理します。 | |
その他 | wp_options |
サイト全体の設定やその他雑多なデータを管理します。 |
1. wp_users
サイトのユーザー情報を管理するテーブルです。 ここにはユーザーの ID ・ユーザー名・パスワード・メールアドレスなどが含まれます。
2. wp_usermeta
ユーザーに付随する追加のデータを管理するテーブルです。 ユーザーの設定や権限情報などが含まれます。 具体的には、管理画面の配色や言語の設定、プロフィール情報やプロフィール写真などが含まれます。
3. wp_posts
投稿データを管理するテーブルです。 WordPress は投稿・固定ページ・カスタム投稿・メディアファイル・投稿リビジョン・テーマのグローバルスタイルなどさまざまなデータを「投稿データ」という共通のフォーマットで内部的に管理しています。 それらのさまざまな投稿データがこのテーブルに格納されます。
具体的には、投稿の ID ・タイトル・本文・公開ステータス・投稿者・投稿日などが含まれています。
4. wp_postmeta
投稿に付随する追加のデータ(フィールド)を管理するテーブルです。 サイト管理者が定義したカスタムフィールドのデータなどはここに格納されます。
5. wp_terms
カテゴリー・タグ・カスタムタクソノミーの用語(ターム)を管理するテーブルです。 具体的には、用語の ID ・名前・スラグ・グループなどが含まれます。
6. wp_termmeta
用語に関連づけられた追加のデータを管理するテーブルです。
7. wp_term_taxonomy
各用語の種類を表す情報(タクソノミー)を管理するテーブルです。
8. wp_term_relationships
カテゴリーやタグなどの用語と投稿との間の関係を管理するテーブルです。
9. wp_comments
投稿につけられるコメントを管理します。 具体的には、コメントの ID ・対象の投稿 ID ・作成者・メールアドレス・コメントの文章・ IP アドレス・ユーザーエージェントなどが含まれます。
10. wp_commentmeta
コメントに付随する追加のデータを保持します。 デフォルトでは使用されず、プラグインなどでカスタムフィールドが定義された場合に使用されます。
11. wp_options
ユーザー・投稿・ターム・コメントなど他のテーブルでの管理いはそぐわないデータを管理するテーブルです。 サイトの URL や名前や説明文、管理者のメールアドレス、ユーザー登録の可否、日付のフォーマット、メールサーバーの設定などに始まりありとあらゆるデータが格納されます。 プラグインの設定などもここに含まれます。
これらに加えて実はもうひとつ wp_links
というテーブルがあります。
ただ、これはかなり昔のバージョンの WordPress で有効だった「リンクマネージャー」と呼ばれる機能のためのもので、今日ではデフォルトでは使用されないものです。
WordPress 3.5 ( 2012 年 12 月)以降では中身は空で、新たに使うことはほとんど無いのでここでは説明を割愛します。
結び
ということで WordPress のデータベース構造の説明でした。
大規模なプラグインやテーマをインストールすると追加のテーブルが作られることもありますが、 WordPress がデフォルトで利用するテーブルはこの 11 個だけです。
パフォーマンスを追求するならもっとテーブルを細かく分けてカラムの型を( VARCHAR
や LONGTEXT
にせず)絞り込むといった選択肢もありますが、このあたりはトレードオフです。
WordPress はシンプルさを追求しており、このシンプルなデータベース構造があるからこそ高い柔軟性と高い後方互換性・保守性を実現できている部分も大きいと思います。
テーブル構造が単純過ぎるという批判が出ることがありますが、使い方を間違わなければほとんどのサイトにおいてはこれでも十分なパフォーマンスが出るので、これはこれでありだと思います。
ちなみに、他の CMS ではインストールをするだけでテーブルが何十個も作られるものなどもあります。 数ある CMS の中でもデータベース構造がここまでシンプルなのは珍しいかもしれません。