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

      2021/02/23   3048文字

【画像つきでわかりやすい】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
【タグ】 -

  関連記事

【PHP etc.プログラム学習サイトコードコピペ】全角引用符・バッククオートが入ってて動かない件に注意
WordPress・REST APIのjsonファイルにカスタムフィールドを入れ、タイトル・アイキャッチと共に外部サイトで取得・表示
【PHPプログラミング】メモ帳に適当にメモったPV数値をexplodeで配列にし、array_sumで合計値を計算する
【webサイトセキュリティ対策】検索フォームへのSQL判定などがある不正な入力を、WAFで遮断する
【PHP】GD関数『imagewebp』でのWebP変換方法&使えないポイント
WordPress記事一覧ページの『本文からの抜粋』を表示する関数と、その文字数の調整方法をチェックする
【WordPressフィールド画像取得】array_push&foreachループ、代替テキストをクラス出力、表示/非表示を切り替える方法
WordPress一覧表示で、特定のカテゴリ/投稿を表示しないようにするには?→category_not_in・post_not_inで
【WordPress組み込み関数】is_home()とis_front_page()って同じ?→似てますが、厳密には挙動が異なります
【WordPress】記事文字数のカウント方法(コア機能・プラグイン)チェックと、フロントへの出力について
【WP記事取得クエリ・プラグイン無し】お知らせなどに使える、ショートコードで特定カテゴリ記事を表示プログラム
【WordPressカスタムフィールド検索】meta_queryで、シリアライズ値が入ったフィールドを持つ記事をヒットさせるには?