コンテンツにスキップ

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 個だけです。

パフォーマンスを追求するならもっとテーブルを細かく分けてカラムの型を( VARCHARLONGTEXT にせず)絞り込むといった選択肢もありますが、このあたりはトレードオフです。 WordPress はシンプルさを追求しており、このシンプルなデータベース構造があるからこそ高い柔軟性と高い後方互換性・保守性を実現できている部分も大きいと思います。

テーブル構造が単純過ぎるという批判が出ることがありますが、使い方を間違わなければほとんどのサイトにおいてはこれでも十分なパフォーマンスが出るので、これはこれでありだと思います。

ちなみに、他の CMS ではインストールをするだけでテーブルが何十個も作られるものなどもあります。 数ある CMS の中でもデータベース構造がここまでシンプルなのは珍しいかもしれません。