WordPressは、見た目にはブログ記事や固定ページを管理するシンプルなツールに見えます。
しかし、その裏側ではデータベースが動いており、投稿本文、画像情報、カテゴリ、タグ、ユーザー情報、サイト設定、プラグイン設定など、さまざまな情報を整理して保存しています。
WordPressのデータベースの仕組みを理解しておくと、サイトのトラブル対応、バックアップ、移行、カスタマイズ、SQLでの確認作業がしやすくなります。
この記事では、WordPressのデータベース構造を初心者にもわかるように、主要テーブルの役割やテーブル同士のつながりを丁寧に解説します。
WordPressのデータベースとは
WordPressのデータベースとは、サイト内の情報を保存しておく場所です。
WordPressでは、MySQLまたはMariaDBというデータベースシステムが使われます。
たとえば、ブログ記事を書いて公開すると、その記事のタイトルや本文、公開日、投稿者、ステータスなどの情報はデータベースに保存されます。
管理画面でサイト名を変更した場合も、その設定はデータベースに保存されます。
つまり、WordPressのサイトは、テーマファイルやプラグインだけで動いているわけではありません。
実際には、次のような役割分担で動いています。
- WordPress本体は、サイトを動かすためのプログラムです。
- テーマは、サイトの見た目を決めるファイルです。
- プラグインは、機能を追加する仕組みです。
- データベースは、投稿や設定などの中身を保存する場所です。
この中でもデータベースは、WordPressサイトの中身そのものを管理する重要な部分です。
WordPressはMySQLまたはMariaDBを使っている
WordPressでは、MySQLまたはMariaDBというリレーショナルデータベースが使われます。
リレーショナルデータベースとは、情報を表のような形で管理する仕組みです。
この表のことを「テーブル」と呼びます。
たとえば、投稿情報を保存するテーブル、コメント情報を保存するテーブル、ユーザー情報を保存するテーブルというように、役割ごとにデータが分けられています。
1つの大きな場所にすべての情報を詰め込むのではなく、情報の種類ごとにテーブルを分けて管理しているのがWordPressデータベースの特徴です。
この仕組みによって、投稿だけを取り出したり、特定のユーザー情報だけを確認したり、カテゴリと投稿の関係を調べたりできるようになっています。
WordPressデータベースのテーブル接頭辞とは
WordPressのデータベースを見ると、多くのテーブル名が「wp_」から始まっています。
たとえば、次のようなテーブルがあります。
- wp_posts
- wp_postmeta
- wp_options
- wp_users
- wp_comments
この「wp_」の部分をテーブル接頭辞と呼びます。
テーブル接頭辞は、wp-config.phpの中にある次の設定で決まります。
$table_prefix = ‘wp_’;
初期状態では「wp_」になっていますが、設定によって別の文字列に変更することもできます。
たとえば、次のように変更されているサイトもあります。
- myblog_posts
- myblog_options
- site01_users
接頭辞を変更する理由は、同じデータベース内で複数のWordPressを管理する場合にテーブル名の衝突を防ぐためです。
また、セキュリティ対策の一部として、初期値の「wp_」から変更するケースもあります。
ただし、すでに運用中のサイトで接頭辞を変更する場合は注意が必要です。設定だけを変更しても、既存のテーブル名やデータとの整合性が崩れる可能性があります。
初心者の方は、安易に変更せず、必ずバックアップを取ったうえで作業することが大切です。
WordPressデータベースの中心はwp_posts
WordPressのデータベースで特に重要なのが、wp_postsテーブルです。
wp_postsは、投稿や固定ページなど、WordPressのコンテンツ本体を管理するテーブルです。
名前に「posts」と入っているため、ブログ投稿だけを保存しているように見えますが、実際には投稿以外の情報も保存されます。
たとえば、wp_postsには次のようなデータが入ります。
- ブログ投稿
- 固定ページ
- カスタム投稿タイプ
- 添付ファイル情報
- リビジョン
- ナビゲーションメニューの一部
WordPressでは、投稿も固定ページもカスタム投稿タイプも、基本的にはwp_postsで管理されます。
その区分を判断するために使われるのが、post_typeという項目です。
たとえば、post_typeが「post」であれば通常のブログ投稿です。
post_typeが「page」であれば固定ページです。
独自に作成されたカスタム投稿タイプの場合は、その投稿タイプ名が入ります。
また、公開状態を管理するためにpost_statusという項目もあります。
- post_statusが「publish」であれば公開済みです。
- post_statusが「draft」であれば下書きです。
- post_statusが「private」であれば非公開です。
このように、wp_postsはWordPressのコンテンツ管理の中心となるテーブルです。
wp_postmetaは投稿の追加情報を管理するテーブル
wp_postmetaは、wp_postsに保存されている投稿や固定ページに対して、追加情報を保存するテーブルです。
「meta」とは、補足情報や追加情報という意味です。
wp_postsには、投稿タイトルや本文などの基本情報が保存されます。
一方で、wp_postmetaには、その投稿に関連する細かい情報が保存されます。
たとえば、次のような情報がwp_postmetaに保存されることがあります。
- カスタムフィールドの値
- SEOプラグインのタイトル設定
- SEOプラグインのディスクリプション設定
- アイキャッチ画像の関連情報
- ページごとの追加設定
- プラグインが保存する独自データ
たとえば、ある投稿に「価格」「住所」「担当者」などのカスタムフィールドを追加した場合、その値はwp_postmetaに保存されます。
wp_postmetaは、post_idという項目を使ってwp_postsと関連します。
つまり、wp_postsの中にある特定の投稿IDに対して、wp_postmetaが追加情報を持つ形です。
イメージとしては、wp_postsがメインの情報、wp_postmetaがその投稿に付属する補足情報です。
WordPressのカスタマイズやプラグイン開発では、このwp_postmetaがよく使われます。
wp_optionsはサイト全体の設定を管理するテーブル
wp_optionsは、WordPressサイト全体の設定を保存する重要なテーブルです。
投稿や固定ページのようなコンテンツではなく、サイトそのものの設定情報が入っています。
たとえば、次のような情報がwp_optionsに保存されます。
- サイトURL
- ホームURL
- サイト名
- キャッチフレーズ
- 有効化しているテーマ
- プラグインの設定
- ウィジェットの設定
- 一時的なキャッシュ情報
- 管理画面で設定した各種オプション
wp_optionsでは、option_nameという項目に設定名が入り、option_valueにその値が保存されます。
たとえば、siteurlというoption_nameには、WordPress本体のURLが保存されます。
homeというoption_nameには、サイトの表示URLが保存されます。
このsiteurlやhomeの値が間違っていると、WordPressにログインできなくなったり、サイトが正しく表示されなくなったりすることがあります。
そのため、WordPressの引っ越しやURL変更を行う際には、wp_optionsの確認が必要になることがあります。
wp_optionsは非常に重要なテーブルなので、直接編集する場合は必ずバックアップを取ってから作業する必要があります。
wp_usersとwp_usermetaはユーザー情報を管理する
WordPressのユーザー情報は、主にwp_usersとwp_usermetaで管理されています。
wp_usersには、ユーザーの基本情報が保存されます。
たとえば、次のような情報です。
- ユーザーID
- ログイン名
- パスワード
- メールアドレス
- 表示名
- 登録日
一方で、wp_usermetaにはユーザーごとの追加情報が保存されます。
たとえば、次のような情報です。
- 権限情報
- プロフィール設定
- 管理画面の表示設定
- ユーザーごとのプラグイン設定
wp_usersがユーザーの基本情報を管理し、wp_usermetaがユーザーごとの補足情報を管理するイメージです。
投稿とwp_postmetaの関係に似ています。
WordPressで「管理者」「編集者」「投稿者」などの権限を管理できるのも、これらのテーブルにユーザー情報と権限情報が保存されているためです。
特に管理者ユーザーに関する情報は重要です。
不正アクセスやユーザー権限のトラブルが起きた場合、wp_usersやwp_usermetaを確認することがあります。
wp_commentsはコメント情報を管理するテーブル
wp_commentsは、投稿に対するコメントを管理するテーブルです。
ブログ記事に読者がコメントを投稿すると、その内容はwp_commentsに保存されます。
保存される主な情報は次のとおりです。
- コメント本文
- コメント投稿者名
- メールアドレス
- 投稿日時
- 承認状態
- 関連する投稿ID
wp_commentsは、comment_post_IDという項目を使ってwp_postsと関連します。
つまり、どの投稿に対するコメントなのかをIDで紐づけています。
たとえば、あるブログ記事に3件のコメントが付いている場合、wp_commentsにはその記事IDに関連するコメントデータが3件保存されます。
また、コメントの承認状態もこのテーブルで管理されます。
承認済みのコメント、承認待ちのコメント、スパムコメントなどの状態を管理するために使われます。
コメント機能を使っていないサイトでも、スパムコメントが大量に保存されていることがあります。
その場合、wp_commentsのデータが増えすぎて、データベースが重くなる原因になることもあります。
カテゴリやタグは複数のテーブルで管理される
WordPressのカテゴリやタグは、少し複雑な仕組みで管理されています。
主に使われるのは、次の3つのテーブルです。
- wp_terms
- wp_term_taxonomy
- wp_term_relationships
wp_termsには、カテゴリ名やタグ名そのものが保存されます。
たとえば、「WordPress」「SEO」「お知らせ」などの名前が保存されます。
wp_term_taxonomyには、そのタームがカテゴリなのかタグなのかといった種類が保存されます。
たとえば、同じ「WordPress」という名前でも、それがカテゴリとして使われているのか、タグとして使われているのかを管理します。
wp_term_relationshipsは、投稿とカテゴリ、投稿とタグの関連を管理するテーブルです。
つまり、ある投稿にどのカテゴリやタグが付いているのかを保存しています。
この3つのテーブルが連携することで、WordPressはカテゴリ一覧ページやタグ一覧ページを表示できます。
初心者には少し難しく感じる部分ですが、考え方はシンプルです。
- wp_termsは名前を保存する場所です。
- wp_term_taxonomyは種類を保存する場所です。
- wp_term_relationshipsは投稿とのつながりを保存する場所です。
この3つが組み合わさることで、投稿にカテゴリやタグを設定できるようになっています。
WordPressのテーブル同士はIDでつながっている
WordPressのデータベースでは、テーブル同士がIDによって関連しています。
たとえば、
- wp_postsの投稿IDとwp_postmetaのpost_idがつながります。
- wp_postsの投稿IDとwp_commentsのcomment_post_IDがつながります。
- wp_postsとカテゴリ・タグの関係は、wp_term_relationshipsなどを通してつながります。
ここで大切なのは、WordPressでは一般的なデータベースのように外部キー制約を厳密に使っているわけではないという点です。
ただし、データの考え方としては、IDを使ってテーブル同士を関連付けています。
たとえば、投稿IDが100の記事があるとします。
- その記事に対する追加情報は、wp_postmetaのpost_idが100のデータとして保存されます。
- その記事に対するコメントは、wp_commentsのcomment_post_IDが100のデータとして保存されます。
このように、1つの投稿に対して、複数のメタ情報やコメントが紐づく形になります。
これを「1対多」の関係と考えると理解しやすくなります。
- 1つの投稿に対して、複数のカスタムフィールドがある。
- 1つの投稿に対して、複数のコメントがある。
- 1つのカテゴリに対して、複数の投稿がある。
この関係性を理解すると、WordPressデータベースの全体像が見えやすくなります。
プラグインによってデータベース構造は拡張される
WordPressは、プラグインによって機能を追加できる仕組みです。
プラグインを導入すると、既存のテーブルに設定情報を保存する場合もあれば、独自のテーブルを作成する場合もあります。
たとえば、SEOプラグインは、投稿ごとのSEOタイトルやメタディスクリプションをwp_postmetaに保存することがあります。
お問い合わせフォーム系のプラグインは、送信履歴を独自テーブルに保存する場合があります。
ECサイト化するWooCommerceのようなプラグインでは、商品、注文、クーポン、顧客情報などを管理するために複数の専用テーブルが追加されます。
このように、WordPressの標準テーブルだけでなく、プラグインが作成したテーブルもデータベース内に増えていきます。
そのため、使わなくなったプラグインを削除しても、データベース内に不要なテーブルが残ることがあります。
サイトが重い場合や、長期間運用しているサイトでは、不要なプラグインテーブルや不要なオプションデータが増えている可能性があります。
ただし、不要に見えるテーブルでも、実際には必要なデータが残っている場合があります。
削除する前には、必ずバックアップを取ることが重要です。
テーマもデータベースに影響することがある
WordPressテーマは、基本的にはサイトの見た目を管理するものです。
しかし、テーマによってはデータベースに設定情報を保存することがあります。
たとえば、次のような情報です。
- トップページの表示設定
- テーマ独自のカスタマイズ設定
- カスタム投稿タイプの設定
- メタボックスの入力内容
- レイアウト設定
テーマによっては、管理画面から入力した設定がwp_optionsやwp_postmetaに保存されます。
そのため、テーマを変更すると、以前のテーマで使っていた設定が表示されなくなることがあります。
また、テーマ独自のカスタム投稿タイプを使っていた場合、テーマを変更したことで管理画面から見えなくなるケースもあります。
データ自体が消えたわけではなく、表示するための仕組みがテーマ側にあったため、見えなくなっているだけの場合もあります。
テーマ変更を行う際は、デザインだけでなく、どのデータがテーマに依存しているのかを確認しておくことが大切です。
WordPressデータベースで特に重要なテーブル
WordPressのデータベースには複数のテーブルがありますが、初心者がまず理解すべき重要テーブルは次のとおりです。
- wp_postsは、投稿、固定ページ、カスタム投稿タイプなどを管理します。
- wp_postmetaは、投稿に関連する追加情報を管理します。
- wp_optionsは、サイト全体の設定を管理します。
- wp_usersは、ユーザーの基本情報を管理します。
- wp_usermetaは、ユーザーごとの追加情報を管理します。
- wp_commentsは、コメント情報を管理します。
- wp_termsは、カテゴリ名やタグ名を管理します。
- wp_term_taxonomyは、カテゴリやタグなどの種類を管理します。
- wp_term_relationshipsは、投稿とカテゴリ・タグの関係を管理します。
この中でも、特に重要なのはwp_postsとwp_optionsです。
wp_postsにはサイトのコンテンツ本体が保存されています。
wp_optionsにはサイト全体の設定が保存されています。
この2つに問題が起きると、サイト表示や管理画面に大きな影響が出る可能性があります。
WordPressデータベースを直接触るときの注意点
WordPressのデータベースは、phpMyAdminやSQLクエリを使って直接確認・編集できます。
たとえば、投稿IDが123の投稿を確認したい場合、SQLで検索することもできます。
ただし、データベースを直接操作する場合は注意が必要です。
管理画面から削除する場合とは違い、SQLで直接削除すると関連データが残ったり、必要な情報を誤って消したりする可能性があります。
たとえば、wp_postsのデータだけを削除しても、それに関連するwp_postmetaのデータが残る場合があります。
これを放置すると、不要なデータがデータベースに残り続ける原因になります。
また、wp_optionsのsiteurlやhomeを間違って変更すると、サイトが表示されなくなったり、管理画面にログインできなくなったりする可能性があります。
そのため、データベースを直接操作する前には、必ずバックアップを取る必要があります。
作業に不安がある場合は、本番環境ではなくテスト環境で確認してから実施するのが安全です。
WordPressデータベースのバックアップが重要な理由
WordPressサイトを安全に運用するうえで、データベースのバックアップは非常に重要です。
なぜなら、WordPressの投稿や固定ページ、設定情報の多くはデータベースに保存されているからです。
サーバー上のテーマファイルや画像ファイルが残っていても、データベースが失われると、投稿内容やサイト設定を復元できなくなる可能性があります。
特に、次のような作業を行う前にはバックアップが必要です。
- WordPress本体の更新
- テーマの変更
- プラグインの追加や削除
- データベースの直接編集
- サイトURLの変更
- サーバー移転
- 大量の記事削除や一括置換
バックアップ方法には、サーバーのバックアップ機能、phpMyAdminでのエクスポート、バックアッププラグインの利用などがあります。
初心者の場合は、バックアッププラグインを使うと比較的簡単です。
ただし、バックアップを取るだけでなく、復元できるかどうかも重要です。
いざというときに戻せないバックアップでは意味がありません。
定期的にバックアップを取り、必要なときに復元できる状態を作っておきましょう。
WordPressデータベースを理解するとトラブル対応に強くなる
WordPressのデータベース構造を理解しておくと、トラブル対応に強くなります。
たとえば、
- サイトURLを変更して管理画面に入れなくなった場合、wp_optionsのsiteurlやhomeを確認することで解決できる場合があります。
- 投稿が表示されない場合は、wp_postsのpost_statusやpost_typeを確認することで原因が見つかることがあります。
- カスタムフィールドの値が反映されない場合は、wp_postmetaを確認することで、保存されている値を調べられます。
- カテゴリやタグが正しく表示されない場合は、wp_terms、wp_term_taxonomy、wp_term_relationshipsの関係を確認する必要があります。
このように、WordPressの裏側でどのテーブルが何を管理しているのかを知っておくと、原因を切り分けやすくなります。
特に、WordPressの管理画面だけでは原因がわからない場合、データベースの理解が役立ちます。
初心者がまず覚えるべきWordPressデータベースの考え方
WordPressデータベースを最初からすべて理解する必要はありません。
初心者の方は、まず次の考え方を押さえておくと十分です。
- 投稿や固定ページはwp_postsに保存される。
- 投稿の追加情報はwp_postmetaに保存される。
- サイト全体の設定はwp_optionsに保存される。
- ユーザー情報はwp_usersとwp_usermetaに保存される。
- カテゴリやタグは複数のテーブルで管理される。
- プラグインやテーマによって保存されるデータが増える。
- データベースを直接触る前には必ずバックアップを取る。
この基本を理解しておくだけでも、WordPressの仕組みがかなり見えやすくなります。
特に、WordPress データベース 仕組み、wp_posts 役割、wp_options 重要、MySQL MariaDB 違いといった検索キーワードで調べる方は、まず主要テーブルの役割から理解するのがおすすめです。
まとめ
WordPressは、MySQLまたはMariaDBを使ってサイト内の情報を管理しています。
投稿、固定ページ、カテゴリ、タグ、コメント、ユーザー、サイト設定などの情報は、役割ごとに分かれたテーブルに保存されます。
中でも重要なのが、コンテンツ本体を管理するwp_postsと、サイト全体の設定を管理するwp_optionsです。
また、wp_postmeta、wp_usermeta、wp_comments、wp_terms関連のテーブルが連携することで、WordPressは柔軟なコンテンツ管理を実現しています。
WordPressのデータベースは、単にデータを保存する場所ではありません。
サイトの表示、管理画面の動作、プラグイン設定、テーマ設定、ユーザー管理など、WordPress全体を支える土台です。
データベースの仕組みを理解しておくと、サイトのバックアップ、移行、トラブル対応、カスタマイズがしやすくなります。
ただし、データベースの直接操作にはリスクがあります。
SQLで編集する場合やphpMyAdminを使う場合は、必ず事前にバックアップを取り、慎重に作業しましょう。
WordPressをより安全に、より深く使いこなすためには、データベースの基本構造を理解しておくことが大切です。
