WordPressのデータベース構造を見てみよう

A723091310e83f5590c4053fe2c47d9a?s=47 *you
November 23, 2017
2.4k

 WordPressのデータベース構造を見てみよう

WordBench 長野 vol.13 でお話した内容です。

A723091310e83f5590c4053fe2c47d9a?s=128

*you

November 23, 2017
Tweet

Transcript

  1. WordPressの データベース構造を見てみよう

  2. *you 非IT企業のWeb担で、 業務アプリ作ってる人 娘がふたり( 7歳 & 2歳 ) ateitexe.com @ateitexe

  3. 私の仕事 Via: http://www.iconsdb.com/ 出荷管理 業務アプリ DB 生産管理システム 帳票出力 生産計画 工場

    ゴリッゴリの Winユーザー! 製造部
  4. WordPressとのかかわり • 会社のコーポレートサイト(一部WP)の保守 • 社内ネットワークにて社員向け情報ページの運営 • 自分のブログ(現在6年目) 個人ブログ コーポレートサイト 社内サイト

    MS Office系の書籍を執筆しています • ブログがきっかけで、執筆業をはじめました • 2018年1月ごろ、「Access レポート&フォーム徹底解説(仮)」発売します
  5. 今日おはなしすること 1. データベースとは? 2. リレーションシップのおはなし 3. WPのデータベース構造 4. どんないいことがあるの? できるだけ

    むずかしくないように がんばります… _(:3 」∠)_
  6. 1データベースとは? • WordPressは、2つの要素から成り立っている • テーマ群 … 「見た目」の構築 • テンプレートファイル •

    画像 • データベース … 「情報」を格納 • タイトル、記事の中身などのテキスト情報 今日はこっちのお話
  7. 買ってきた食材、どうしますか? おなじところに ぜんぶ 入れちゃう?

  8. それぞれ適切な場所に保管しますよね? すっごく データベース! にんじん じゃがいも たまねぎ レトルト類 カップラーメン 缶詰 おにく

    さかな アイス 冷凍食品 キャベツ レタス
  9. テキストで表現してみる 種類 グラム 数 牛 200 2 豚 200 3

    鮭 100 3 冷蔵室 種類 数 キャベツ 2 レタス 3 野菜室 種類 箱入数 数 バニラアイス 6 1 チョコアイス 6 2 冷凍グラタン 3 1 冷凍室 種類 数 にんじん 2 じゃがいも 6 たまねぎ 5 根菜棚 種類 数 レトルトカレー 6 カップラーメン 3 保存食棚
  10. ざっくりいうと • 情報を整理・グループ化してあるべきところにきれいに収める • さがしやすい! • いっぱいはいる!!

  11. データベースの基礎用語 テーブル 縦方向: フィールド 横方向: レコード 見出し: フィールド名 テーブルが 集まったものが

    データベース レコード 単位で 増減
  12. 主キー と データ型 ID 入社日 名前 性別 1 2017-11-01 鈴木一郎

    35 2 2017-11-05 山田太郎 28 3 2017-11-05 山田太郎 28 社員情報 数値型 (自動連番) 日付/ 時刻型 テキスト型 数値型 • データ型 • 誤登録を防ぐ • 無駄な容量を使わない • 並び替えしやすい • 計算に強い 主キー レコードの 識別
  13. 2リレーションシップのおはなし • ただ保管するだけじゃない、データベースのスゴイところ • テーブルとテーブルを「関連付ける」 • 少ないデータ量でたくさんの情報を扱える

  14. 1つのテーブルで管理すると ID 日時 区分 名前 部門 1 2017-11-10 07:50:00 出勤

    鈴木一郎 営業 2 2017-11-10 07:55:00 出勤 山田太郎 総務 3 2017-11-10 18:00:00 退勤 山田太郎 総務 出退勤管理 ちょっと 無駄が多い…
  15. 複数テーブルで管理すると 出退勤ID 日時 区分 社員ID 1 2017-11-10 07:50:00 出勤 1

    2 2017-11-10 07:55:00 出勤 3 3 2017-11-10 18:00:00 退勤 3 出退勤管理 社員ID 入社日 名前 性別 部門 1 2011-11-01 鈴木一郎 35 営業 2 2017-11-05 山田太郎 28 総務 3 2017-11-05 山田太郎 28 総務 社員情報 主キーを使って 関連づけると、 無駄なデータを 持たなくて済む リレーションシップ
  16. 3WordPressのデータベース構造 • テーブル数は、12個(4.8.3現在) • たいてい、インストール時に設定するだけで見たことない人が多い…? • ざっくりした概要だけでも知ってると便利(だと思う)! • バックアップへの理解も進むんじゃないかな

  17. WordPress (4.8.3) のテーブル • wp_commentmeta • wp_comments • wp_links •

    wp_options • wp_postmeta • wp_posts • wp_termmeta • wp_terms • wp_term_relationships • wp_term_taxonomy • wp_usermeta • wp_users メタデータ ↓ データについての データ カテゴリー タグ ユーザー情報 投稿 コメント ピンバック
  18. wp_posts テーブルのフィールド • ID • post_author • post_date • post_date_gmt

    • post_content • post_title • post_excerpt • post_status • comment_status • ping_status • post_password • post_name • to_ping • pinged • post_modified • post_modified_gmt • post_content_filtered • post_parent • guid • menu_order • post_type • post_mime_type • comment_count … 記事/添付ファイルID … 投稿者ID … 投稿日時 … 本文 … タイトル … 抜粋オプション … 投稿ステータス … コメントステータス … ピンバックステータス … 投稿スラッグ … 更新日時 … 親ID … 投稿タイプ … コメント数 post … 投稿ページ page … 固定ページ attachment … 添付ファイル etc publish … 公開 draft … 下書き private … 非公開 inherit … 添付ファイル etc
  19. wp_posts イメージ ID post_author post_date post_title post_content post_status post_type …

    1 2 2017-11-01 00:00:00 投稿テスト 本文テキスト draft post … 2 2 2017-11-10 00:00:00 filename inherit attachment … 3 1 2017-11-19 00:00:00 固定テスト 本文テキスト publish page … 投稿ステータス 投稿タイプ 記事/添付ID 投稿者ID 投稿日時 本文 タイトル リビジョンの場合は post_status: inherit post_type: revision 知らずに溜まるので注意
  20. wp_terms テーブルのフィールド term_id name slug term_group 1 WordPress wordpress 2

    イラスト illustration 3 日記 diary 名称 カテゴリID or タグID スラッグ
  21. wp_term_relationships テーブルのフィールド object_id term_taxonomy_id term_order 1 3 2 1 2

    2 リンク先ID (記事ID) カテゴリID or タグID
  22. ID post_author post_date post_title post_content post_status post_type … 1 2

    2017-11-01 00:00:00 記事1 本文テキスト1 publish post … 2 2 2017-11-10 00:00:00 記事2 本文テキスト2 publish post … 3 1 2017-11-19 00:00:00 記事3 本文テキスト3 draft post … wp_posts object_id term_taxonomy_id term_order 1 3 2 1 2 2 term_id name slug term_group 1 WordPress wordpress 2 イラスト illustration 3 日記 diary wp_term_relationships wp_terms 日記 WordPress イラスト リレーションシップのイメージ
  23. データベースの最適化と修復 プラグイン ・WP-DBManager ・WP-Optimize 削除した ・コンテンツ ・リビジョン ・スパムコメント 最適化/修復 ※容量は自動で減らない

  24. 4 • テンプレートタグで出力される元がわかる! • <?php the_title(); ?> • <?php the_content();

    ?> どんないいことがあるの? ID post_author post_date post_title post_content post_status post_type … 1 2 2017-11-01 00:00:00 記事1 本文テキスト1 publish post … 2 2 2017-11-10 00:00:00 記事2 本文テキスト2 publish post … 3 1 2017-11-19 00:00:00 記事3 本文テキスト3 draft post … wp_posts データベースから、 このフィールドの データを持ってきてる!
  25. • 検索結果を投稿記事のみにする(固定ページなどを除外) カスタマイズの意味がわかる! さっきみたやつ! via: http://notnil-creative.com/blog/archives/1996

  26. • 指定の投稿者の年間投稿数(公開済み)だけほしい! <?php echo get_archives_num( 2017, 1 ); ?> で呼び出せる関数を自作したり

    ピンポイントでほしいデータだけひっぱれる!(力技) さっきみたやつ! こういうことも できるぞっていう 例なだけなので、 タグがあるなら そっち使おう!
  27. ★ さいごに • データベースは、WordPressの「中身」 • ファイル群ももちろん大事だけど、ないと成り立たないモノ • 知らなくても使えるけど、知っていたほうがより理解が深まる! • バックアップ大事!

    • データベースの中身もちゃんとバックアップしておこうね!
  28. ありがとうございました!