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

  関連記事

【webサイトセキュリティ対策】検索フォームへのSQL判定などがある不正な入力を、WAFで遮断する
WordPressの記事IDで判定して転送~PHP・headerとget_the_IDで対応、the_IDとの挙動の違いも
WPデータベースの余計なデータには何がある?事例と対処方法・あるとイヤなケース
【WordPressフィールド画像取得】array_push&foreachループ、代替テキストをクラス出力、表示/非表示を切り替える方法
【WordPress条件分岐】is_singleとis_singularって違うの?→idやスラッグ指定、投稿タイプ指定の面で違いが
【PHP学習】var_dumpで出力するのと、echoで出力するのは、挙動がどのように違うの?
YouTube Data APIを使って、PHPで『タイトル・動画id・サムネイル画像』などを取得してみる(Search: listリソース)
【PHP】GD関数『imagewebp』でのWebP変換方法&使えないポイント
PHP・shuffleやarrayを使った、画像ランダム表示方法~メインビジュアルやバナー・テキストにも利用可能
【WordPress組み込み関数】is_home()とis_front_page()って同じ?→似てますが、厳密には挙動が異なります
侍エンジニア塾ブログにあったPHPコードをシンプルに書いてみる(foreachで配列キーや値取得・continueで空要素スキップ)
【WP記事取得クエリ・プラグイン無し】お知らせなどに使える、ショートコードで特定カテゴリ記事を表示プログラム