【画像つきでわかりやすい】WordPressで使われるデータは、MySQLデータベースに、どのように格納されているの?

更新: 2023/10/26 3009文字

【画像つきでわかりやすい】WordPressで使われるデータは、MySQLデータベースに、どのように格納されているの?

今回は、学習コンテンツです(WordPress&MySQLデータベース)。WordPressをとおして、各種データがどのようにMySQLデータベースに入っているかを押さえます。 覚えておくと、『データベースアクセスが必要な項目を静的化して高速化』『ショッピングサイトなどに応用』『canonical urlやmeta descriptionなどをページごとに読む機能』などに使えるかもしれません。さっそく見ていきましょう。

MySQLデータベースへのアクセスのしかた(例:ロリポサーバー・phpMyAdmin使用)

ウェブブラウザでMySQLデータベースを操作できるツールに『phpMyAdmin』というのがあります。、PHPで実装されているSQL文を記述することなく、MySQLのデータベースに対して様々な操作が行えるツールのことです。

(例:ろりぽサーバーの場合。サーバー管理→データベース)たいていのサーバーではphpMyAdminでデータベース操作することができると思います。パスワードやサーバー情報・データベース名などを入力して入ります。データベース系はサポート外になっているようですが、構造がわかればたぶん大丈夫でしょう。『postのテーブルを消しちゃったら、記事が全部なくなった』とかね(笑)

information_schemaっていうデータベースがあるんだけど?

phpMyAdminに入ってみました。WordPressで使っているデータベースのほかに、『information_schema』というデータベースがあるのが確認できます。これは、データベースのメタデータとのことで、最初っから自動で入ってくる設定ファイルみたいなものと考えましょう。

mysql開発などをやる場合はおさえておかなければなりませんが、WordPressではほとんど使わない印象です。しかし、ネット上では『WordPressを別サーバーに移転するときに、本体データベースでなく、information_schemaをインポートしたのでエラーになった』などの例が確認できました。本文などが入っているデータベースとは別というように押さえておいてください。

WordPressで使われるデータは、MySQLデータベースに、どのように格納されているか

ではさっそく、『MySQLデータベース内にWordPressのデータが、どのように格納されているか』を見ていきます。テーブル名の表記が『●●●_テーブル名』みたいになっていますが、この●●●の部分はテーブル接頭辞(プレフィックス)です。デフォルトではwpになっていると思います。二つ以上インストールやセキュリティ上の理由で変更することがあります。

●●●_postmeta(記事のメタデータ)

投稿記事、ページなどのメタデータです。all in one seoプラグインで設定した『タイトルやディスクリプション』なども入っています。サムネ画像に振ったidなども入っています。

●●●_posts(記事の内容)

記事の内容が格納されているテーブルです。idが記事番号で(設定によってはこれがurlに入ります)、『post_content』にはまるまる記事本文が、『post_title』には記事タイトルが入っています。これを間違って消してしまうと、記事が表示されなくなるので気をつけましょう(当サイト管理人は、postsのテーブルを間違って消して、記事を吹っ飛ばしたことがあります笑)。

●●●_urls(ページごとのurl)

page/2みたいな、url形式なども格納されています。

●●●_tearms & ●●●_term_taxonomy

カテゴリ、タグに使われる語句が『●●●_tearms』です。名前のほか、個別のurlに使われるスラッグなどもこちらに格納。

『●●●_term_taxonomy』は分類のことで(単語の意味も分類学・分類法みたいな意味)、idのほか、『タグか、カテゴリーか、ナビゲーションメニューか』みたいな分類がされています。descriptionを設定した場合はここに入るようです。カウントという項目もあるので、それを呼び出して『そのカテゴリ内に記事が何個あるか』を表示することもできます。

●●●_comments

commentsはコメントです。最近はあまり使わないので非表示にしています。画像はWordPressインストール時に入っているコメントが入っている様子です。

●●●_options

optionsには、管理画面で入力したオプション設定情報が含まれています。サイトのurl・サイト名・description・ユーザー登録可能かどうか・週の始まりはどこにするか、などです。

●●●_ewwwio_images(プラグイン)

データベースにはプラグインに関わる情報も格納されます。以前使ってみた、画像圧縮プラグインについて、『圧縮かけた画像やID・圧縮率や結果』などといったデータが残っていました。これはWPのプラグイン管理・操作画面でも見ることができます。

そのほか、Mysql内に余計なテーブル・データなどがたまる例

このサイトで以前にも書きましたが、『多すぎるリビジョン』『プラグインの残骸』『迷惑コメント』なども、データベース内にたまっていきます。

ちょっとだけだったら(データ容量自体はたいしたことないので)、急激に表示速度が遅くなるみたいなことはないですが、余裕があったら整理しておくといいでしょう。構造を学習する上でもよいかも?

あとがき・まとめ

  • WPで使うデータベース以外に、データベース自体の設定やメタデータなどのデータベースがある
  • テーブルの名前は『post(記事)』みたいに、見ればわかる感じ
  • URLやタグ・カテゴリーみたいな構造や、サイト情報・管理者データ(メルアドや名前)なども格納されている

簡単にまとめると、こんなところでしょうか。WPユーザー向けでしたが、データベース構造を知っていただけたことかと思います。 学習のほかにも、『自分でディスクリプションだけページごとに設定する機能を実装』みたいなカスタマイズをするときに、構造を知っておくと役にたちます。

WordPressサイト制作&リニューアル・機能開発サービス | アトリエSS


【カテゴリ】- PHP・データベースetc
【タグ】-

関連記事

【別に止めなくてOK】WordPressサイトなどに、アメブロ・fc2などの更新情報を表示・連携する方法
WordPress一覧表示で、特定のカテゴリ/投稿を表示しないようにするには?→category_not_in・post_not_inで
【PHP etc.プログラム学習サイトコードコピペ】全角引用符・バッククオートが入ってて動かない件に注意
【WPユーザー名バレ対策】ユーザー名表示からPHP・preg_matchでリダイレクト(wp-json/wp/v2/usersなど)
【WordPressで覚える】PHP「->」(オブジェクト演算子/アロー演算子)・「=>」(ダブルアロー演算子)の違い
【PHPライブラリでスクレイピング】PHP Simple HTML DOM Parserで、クラスやID指定で別サイトの内容を取得する方法
【PHPプログラミング】ヒアドキュメント構文 (“<<<“)使ってみた例~メール確認画面&入力内容などの変数渡し
テスト環境(ローカル含む)でPHPサイト開発に使えるツール&XAMPPでやってみた例(設定や表示ファイルetc)
【WordPress条件分岐】is_singleとis_singularって違うの?→idやスラッグ指定、投稿タイプ指定の面で違いが
【PHPプログラミング】glob関数を使って、特定ディレクトリ内のファイル一覧取得や、出力を行う方法
【WordPressカスタムフィールド検索】meta_queryで、シリアライズ値が入ったフィールドを持つ記事をヒットさせるには?
【WordPressフィールド画像取得】array_push&foreachループ、代替テキストをクラス出力、表示/非表示を切り替える方法