初心者必見!WordPressのデータベースの構造や仕組み、メンテナンス等について解説
みなさんこんにちは!エンジニアの高澤です!
今回はWordPressのデータベースの構造や仕組み、メンテナンス等について解説していきたいと思います。
WordPressのデータベースは、テーマ開発ではあまり意識しなくて良いかもしれませんが、より高度なテーマ開発となってくるとWordPressのデータベース構造を理解していないと対応することが難しい場面が多々あります。
また、開発者でなくてもウェブ担当者の方にとってもデータベースのメンテナンスをできる範囲で行なっておくことは、企業の資産を守ったりリスク対策などにつながるため、非常に重要な内容かと思います。
今回はそんな、WordPressのデータベースについてお困りなエンジニアの方やウェブ担当者の方へ向けて、当記事を読んでおけばお仕事でお役に立てるレベルの構成で執筆しております。
よろしければぜひ当記事をご活用いただけましたら幸いです。
目次
データベースとは
データベースとは、データを効率的に管理・保存・検索するためのデータの集合体です。
コンピュータシステムやソフトウェアアプリケーションが、必要なデータにアクセスできるようにするために使用されます。
データベースは、通常、テーブルと呼ばれるデータの構造化された形式でデータを保持します。
これらのテーブルには、行と列が含まれ、それぞれが特定のデータ項目を表します。
テーブルは、関連するデータをグループ化し、関連性を保持するために使用されます。
一般的に、データベース内の複数のテーブルが相互に関連付けられることで、より複雑なデータ構造が作成されます。
データベースは、情報を取得、更新、削除、追加するためのSQL(クエリ言語)などを使用して操作されます。
これにより、データベース内のデータを操作するための柔軟性が向上し、必要な情報に効率的にアクセスできるようになります。
データベースは、ビジネスや組織、ウェブサイトなどさまざまな分野で広く使用されており、情報の管理と利用を効率化する上で非常に重要な役割を果たしています。
WordPressのデータベースとは
WordPressのデータベースとは、WordPressがサーバーにインストールして立ち上げたサイトやブログに関連する情報を保存するためのデータベースです。
WordPressのコア機能、テーマ、プラグインなどが生成するデータを格納し、サイトの正常な運用に必要な情報を管理します。
またWordPressのデータベースは、MySQLやMariaDBなどのリレーショナルデータベース管理システム(RDBMS)を使用しています。
WordPressはデータベースを操作するためのテンプレートタグ(WordPressによって提供される専用の関数)などのAPIを提供し、開発者がデータベースにアクセスして情報を取得・更新・削除することができます。
WordPressのインストールと同時に自動で生成される
WordPressのデータベースは、サーバーにWordPress本体をインストールしたと同時にWordPress専用のデータベースが自動で生成されます。
そのため開発者が自分でわざわざWordPressに対応する構成でデータベースを構築する必要がなく、WordPressのセットアップ作業でのクリック操作だけでデータベースの作成が自動で完了します。
これはWordPressを利用するメリットの一つといえます。
WordPressのデータベースの構造
次はWordPressのデータベースの構造について解説していきたいと思います。
WordPressのデータベースは、以下のようなテーブル構造を持っています。
上図の各テーブルについて、それぞれ解説いたします。
wp_users | WordPressサイトのユーザー情報を格納するテーブルです。ユーザー名、パスワード、メールアドレスなどの情報が含まれます。 |
wp_usermeta | WordPressのユーザーに関連する追加のメタデータを格納するためのテーブルです。 |
wp_posts | WordPressサイトで作成された投稿やページの情報を格納するテーブルです。タイトル、内容、投稿日時、投稿タイプなどの情報が含まれます。 |
wp_postmeta | WordPressの投稿やページに関連する追加のメタデータを格納するためのテーブルです。 |
wp_comments | サイトに投稿されたコメントの情報を格納するテーブルです。コメント内容、投稿者情報、承認状況などの情報が含まれます。 |
wp_commentmeta | WordPressのコメントに関連する追加のメタデータを格納するためのテーブルです。 |
wp_terms | カテゴリーやタグなどのターム(用語)の情報を格納するテーブルです。 |
wp_term_relationships | 投稿やページとカテゴリーやタグなどのタームとの関連性を格納するテーブルです。 |
wp_term_taxonomy | タームのタクソノミー(カテゴリー、タグなど)に関する情報を格納します。 |
wp_termmeta | 各タームに関連付けられた追加のメタデータを格納します。例えば、タームごとにカスタムフィールドや設定を保存する場合に使用されます。 |
wp_options | WordPressの設定やプラグインの設定、テーマのカスタマイズなど、サイトの設定情報を格納するテーブルです。 |
wp_links | リンクやブックマークの情報を格納するテーブルです。 古いバージョンのWordPressで使用されていたテーブルで、3.5以降のデフォルトでは無効化され、今後はあまり利用されなくなると思われます。 |
インストール直後は上記のテーブル内容でデータベースが自動構築されます。
これらのテーブルは、WordPressサイトの構造と機能を支えるために重要な役割を果たしています。
データベース内のこれらのテーブルが適切に管理され、適切な関連付けが行われることで、WordPressサイトのコンテンツや機能が正常に動作します。
WordPressのテーブルの役割
それではWordPressのテーブルの役割について解説していきたいと思います。
ここでそれぞれのテーブルについて知っておくことで、今後高度なテーマ開発やプラグイン開発で知っていなければ対応できない実装が後々でてくるのでスムーズに実装することができます。
しっかり確認していきましょう。
wp_users
WordPressサイトのユーザー情報を格納するためのテーブルです。各ユーザーのユーザー名、パスワード(暗号化されて保存)、メールアドレス、表示名、権限レベルなどの情報が含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
ID | bigint | AUTO_INCREMENT |
user_login | varchar(60) | |
user_pass | varchar(255) | |
user_nicename | varchar(50) | |
user_email | varchar(100) | |
user_url | varchar(100) | |
user_registered | datetime | |
user_activation_key | varchar(255) | |
user_status | int | |
display_name | varchar(250) |
wp_usermeta
wp_usersテーブルと関連付けられたユーザーの追加情報やメタデータを格納するためのテーブルです。カスタムフィールド、プロフィール情報、権限設定など、ユーザーに関連する追加情報が含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
umeta_id | bigint | AUTO_INCREMENT |
user_id | bigint | |
meta_key | varchar(255) | |
meta_value | longtext |
wp_posts
WordPressサイトの投稿やページのコンテンツを格納するためのテーブルです。記事やページのタイトル、本文、投稿者、投稿日時、ステータスなどの情報が含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
ID | bigint | AUTO_INCREMENT |
post_author | bigint | |
post_date | datetime | |
post_date_gmt | datetime | |
post_content | longtext | |
post_title | text | |
post_excerpt | text | |
post_status | varchar(20) | |
comment_status | varchar(20) | |
ping_status | varchar(20) | |
post_password | varchar(255) | |
post_name | varchar(200) | |
to_ping | text | |
pinged | text | |
post_modified | datetime | |
post_modified_gmt | datetime | |
post_content_filtered | longtext | |
post_parent | bigint | |
guid | varchar(255) | |
menu_order | int | |
post_type | varchar(20) | |
post_mime_type | varchar(100) | |
comment_count | bigint |
wp_postmeta
wp_postsテーブルと関連付けられた投稿やページの追加情報やメタデータを格納するためのテーブルです。カスタムフィールドなどの情報が含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
meta_id | bigint | AUTO_INCREMENT |
post_id | bigint | |
meta_key | varchar(255) | |
meta_value | longtext |
wp_comments
WordPressサイトのコメントを格納するためのテーブルです。各コメントの内容、投稿者の名前、メールアドレス、ウェブサイト、投稿日時などの情報が含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
comment_ID | bigint | AUTO_INCREMENT |
comment_post_ID | bigint | |
comment_author | tinytext | |
comment_author_email | varchar(100) | |
comment_author_url | varchar(200 | |
comment_author_IP | varchar(100) | |
comment_date | datetime | |
comment_date_gmt | datetime | |
comment_content | text | |
comment_karma | int | |
comment_approved | varchar(20) | |
comment_agent | varchar(255) | |
comment_type | varchar(20) | |
comment_parent | bigint | |
user_id | bigint |
wp_commentmeta
wp_commentsテーブルと関連付けられたコメントの追加情報やメタデータを格納するためのテーブルです。コメントのステータス、カスタムフィールド、メタデータなどの情報が含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
meta_id | bigint | AUTO_INCREMENT |
comment_id | bigint | |
meta_key | varchar(255) | |
meta_value | longtext |
wp_terms
WordPressサイトのターム(カテゴリーやタグなど)の情報を格納するためのテーブルです。タームの名前、スラッグ、説明などの情報が含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
term_id | bigint | AUTO_INCREMENT |
name | varchar(200) | |
slug | varchar(200) | |
term_group | bigint | |
term_order | int |
wp_term_relationships
wp_termsテーブルと関連付けられた投稿やページ、カスタム投稿タイプなどのタームの関係性を格納するためのテーブルです。投稿とタームの関連付け情報が含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
object_id | bigint | |
term_taxonomy_id | bigint | |
term_order | int |
wp_term_taxonomy
タームの階層構造や分類の情報を格納するためのテーブルです。タームのタイプ(カテゴリー、タグなど)、親子関係、タクソノミーの説明などの情報が含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
term_taxonomy_id | bigint | AUTO_INCREMENT |
term_id | bigint | |
taxonomy | varchar(32) | |
description | longtext | |
parent | bigint | |
count | bigint |
wp_termmeta
wp_termsテーブルと関連付けられたタームの追加情報やメタデータを格納するためのテーブルです。カスタムフィールド、メタデータ、タームのオプションなどの情報が含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
meta_id | bigint | AUTO_INCREMENT |
term_id | bigint | |
meta_key | varchar(255) | |
meta_value | bigint |
wp_options
WordPressの設定やオプション情報を格納するためのテーブルです。WordPressの設定、プラグインやテーマの設定、キャッシュ設定などが含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
option_id | bigint | AUTO_INCREMENT |
option_name | varchar(191) | |
option_value | longtext | |
autoload | varchar(20) |
wp_links
WordPressのブログロールやリンク情報を格納するためのテーブルです。リンクの名前、URL、説明、カテゴリーなどの情報が含まれます。
テーブル内のすべてのデータ情報は以下になります。
データ名 | タイプ | その他 |
link_id | bigint | AUTO_INCREMENT |
link_url | varchar(255) | |
link_name | varchar(255) | |
link_image | varchar(255) | |
link_target | varchar(25) | |
link_description | varchar(255) | |
link_visible | varchar(20) | |
link_owner | bigint | |
link_rating | int | |
link_updated | datetime | |
link_rel | varchar(255) | |
link_notes | mediumtext | |
link_rss | varchar(255) |
WordPressのデータベースの心得・注意点
WordPressでは先ほど解説した「WordPressのデータベースの構造」の内容にある通り、WordPress独自の12個のテーブルで構成されたデータベース構造を持ち、WordPressは成り立っております。
WordPressでは12個のテーブルを基本にしつつ運用されますが、プラグインをインストールしたときや、テーマをインストールしたときなどにそれぞれ独自のテーブルを作成し機能を拡張することがあるので、結果的にどんどんテーブルが増えていくことになります。
そのため、データが肥大化しサイトの動作が遅くなってしまったり、後々プラグインをアンインストールなどして無駄なテーブルができてしまったりしてセキュリティリスクが高まったりしてしまうなどの問題が後々発生する可能性があります。
このようなリスクに備えて、開発者はデータベースのどのテーブルが何の役割を持っているのか?、どんなデータ構造(データ名やデータの特徴)をしているのかなどを知っておくと、今後のテーマやプラグインなどの開発がスムーズになりますので、当記事でしっかり学習しておきましょう。
また、エンジニアはもちろん、ウェブ担当者の方もWordPressのデータベースのメンテナンスについてここで知っていただき、万が一のリスクに備えて日頃から対策や作業をしていただけますことをおすすめいたします。
WordPressのデータベースのメンテナンスの必要性
WordPressのデータベースのメンテナンスの必要性について解説いたします。
WordPressのデータベースのメンテナンスは、サイトのパフォーマンスを最適化し、セキュリティを向上させ、データの整合性を保つために重要です。
その理由をまとめると以下の内容になります。
- プラグインの多数導入などによるテーブルの肥大化
- データ肥大化による読み込み速度の低下
- セキュリティリスクが高まる
- データの損失のリスクが高まる
- 整合性の喪失
- スケーラビリティの制限
それぞれ解説いたします。
プラグインの多数導入などによるテーブルの肥大化
WordPressのデータベースには、投稿、ページ、コメント、プラグインなどの情報が保存されます。
プラグインを多数導入すると、これらの情報が増加し、データベースのテーブルが肥大化します。テーブルが肥大化すると、データベースへのアクセスやクエリの処理が遅くなり、サイトのパフォーマンスが低下します。
データ肥大化による読み込み速度の低下
データベース内のデータが増加すると、読み込み速度が低下する可能性があります。
大量のデータがあると、データベースから必要な情報を取得するのに時間がかかります。結果として、サイトの読み込み速度が遅くなり、ユーザーエクスペリエンスが悪化します。
セキュリティリスクが高まる
データベースが肥大化すると、セキュリティリスクが高まります。
データベース内には、ユーザー情報や機密データが保存されているため、悪意のある攻撃者がアクセスしやすくなります。また、セキュリティの脆弱性を悪用してデータベースを攻撃する可能性も高まります。
データの損失のリスクが高まる
データベースの肥大化やセキュリティリスクの増加により、データの損失のリスクが高まります。
データベースが攻撃やエラーによって損傷したり、サーバーの障害が発生したりすると、重要なデータが失われる可能性があります。バックアップがない場合、データを回復する手段が制限され、重大な影響を受ける可能性があります。
データの整合性の喪失
データベース内のデータが整合性を欠いている場合、サイトの機能が正常に動作しなくなる可能性があります。
例えば、記事とカテゴリーの関連が正しくない場合、記事が正しいカテゴリーに表示されなくなる可能性があります。
スケーラビリティが制限される
データベースの肥大化や整合性の喪失は、サイトのスケーラビリティを制限してしまう可能性があります。
大規模なトラフィックやデータの成長に対応するためには、効率的なデータベース管理が必要です。肥大化したデータベースは、スケーラビリティに制限をもたらし、サイトの成長を妨げる可能性があります。
WordPressのデータベースを整理・操作する方法
WordPressのデータベースを整理・操作する方法について解説したいと思います。
整理・操作する方法については以下になります。
- サーバーのphpMyAdmin管理画面から操作する
- WP phpMyAdminプラグインから操作する
それぞれ解説いたします。
サーバーのphpMyAdmin管理画面から操作する
phpMyAdminとは、PHPプログラミングで使用されるもっとも基本的で定番なデータベース操作ツールのことをいいます。
レンタルサーバーなどサーバーにあらかじめインストールしてあり、phpMyAdminを使用することによってデータベースの作成、削除、テーブルの作成、更新、削除、などがブラウザ画面で操作することができます。
もしご自身でお使いのサーバーがレンタルサーバー(例:エックスサーバー、さくらサーバー、ロリポップ等)であれば、サーバー管理画面からphpMyAdminを使用することができますので、ご自身のレンタルサーバーの公式ドキュメント等を確認してみてください。
WP phpMyAdminプラグインから操作する
WP-WP phpMyAdminとは、WordPressサイトの管理者が管理画面からデータベースをサーバーに備わっているphpMyAdminのように操作することができる機能を提供するプラグインのことをいいます。
サーバー管理画面にログインできない場合や、WordPress管理画面で一括管理したい場合などに有効です。
インストール後に管理画面左メニューに「WP-phpMyAdmin」というメニュー項目が追加され、設定ページを開くと以下のような設定ページが開きます。
開いたら「Enter local phpMyAdmin」をクリックしてください。
すると下図のように、phpMyAdminの操作画面が開きます。
これでデータベースを操作することができるようになりました。
WordPressのデータベースのバックアップ方法
次はWordPressのデータベースのバックアップ方法について解説いたします。
バックアップ方法としては以下の内容となります。
- All-in-One WP Migrationプラグインを使用する
- phpMyAdminで手動でバックアップを取得する
それぞれ解説していきます。
All-in-One WP Migrationプラグインを使用する
筆者が一番おすすめしたいバックアップの取得方法がAll-in-One WP Migrationプラグインを使用することです。
All-in-One WP Migrationとは、クリック操作だけで簡単にデータベースを含めたサイト全体のデータのバックアップを取得することができるプラグインのことをいいます。
操作画面を非常にシンプルで使いやすく、本当に簡単にインポート(復元)とエクスポート(データ取得)をすることができます。
要件にもよりますが、筆者的にはWordPressを立ち上げたらまずすぐにこのプラグインをインストールするぐらい重宝しており、世界的にもかなり有名なプラグインです。
phpMyAdminで手動でバックアップを取得する
バックアップの取得方法として、phpMyAdminで手動でバックアップを取得する方法もあります。
phpMyAdmin操作画面にあるエクスポート機能を利用して自分でバックアップを取得します。
こちらの方法は、何かの事情でWordPressの管理画面にアクセスできなかったり、All-in-One WP Migrationプラグインと二重でバックアップを取得して万全の状態でメンテナンスしたいときに有効です。
WordPressのデータベースで不要なテーブル・データを削除する方法
それでは最後にWordPressのデータベースで不要なデータを削除する方法について解説していきたいと思います。
不要なテーブル・データを削除する方法は以下になります。
- Database Cleanupで不要なテーブルを削除する
- WP-Optimizeで不要なデータのみを削除する
それぞれ解説していきます。
Database Cleanupで不要なテーブルを削除する
Database Cleanupとは、不要なテーブルを削除することで、データベースを整理し、サイトのパフォーマンスを向上させることができるプラグインのことをいいます。
サイトに不要なプラグインやテーブルを特定し、それらを削除してデータベースを最適化してくれます。
このプラグインをインストールしたら、下図の設定ページが追加されます。
上図の操作画面を利用して、不要なテーブル等を削除してください。
WP-Optimizeで不要なデータのみを削除する
WP-Optimizeとは、データベース内の不要なデータを削除し、データベースを最適化するためのプラグインです。
これにより、不要なレコードやキャッシュ、ログなどを削除し、データベースのサイズを減らすことができます。
データベースの容量を削減することで、読み込み速度を向上させ、サイトのパフォーマンスを改善します。
このプラグインをインストールしたら、下図の設定ページが追加されます。
上図の操作画面を利用して、不要なデータを削除してください。
まとめ
WordPressのデータベースの構造や仕組み、メンテナンス等についての解説は以上になります。
WordPressのデータベースは、テーマ開発ではあまり意識しなくて良いかもしれませんが、より高度なテーマ開発となってくるとWordPressのデータベース構造を理解していないと対応することが難しい場面が多々あります。
当記事ではそんな高度なテーマ開発やプラグイン開発に対応できるような構成で、お仕事で使えるレベルで執筆いたしました。
また合わせてエンジニアの方向けの内容だけではなく、ウェブ担当者の方などへ向けてメンテナンス方法などについても解説いたしました。
よろしければぜひ当記事をお仕事にご活用いただけましたら幸いです。
お気軽に皆さんのご要望をお聞かせください!
どんなに些細なことでも構いません!よろしければ記事や当サイトへの「こんな記事があったら仕事とかで役に立つな〜」や「こうだったらもっと役に立つのに!」といったようなご要望等をお気軽にお聞かせください!今後のサービス改善にお役立てさせていただきます!
例1)Reactの技術記事を書いてほしい!
例2)WordPressの使い方とかを初心者向けに解説してほしい!...など