Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

*you
November 23, 2017
2.5k

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

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

*you

November 23, 2017
Tweet

Transcript

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

    MS Office系の書籍を執筆しています • ブログがきっかけで、執筆業をはじめました • 2018年1月ごろ、「Access レポート&フォーム徹底解説(仮)」発売します
  2. 1データベースとは? • WordPressは、2つの要素から成り立っている • テーマ群 … 「見た目」の構築 • テンプレートファイル •

    画像 • データベース … 「情報」を格納 • タイトル、記事の中身などのテキスト情報 今日はこっちのお話
  3. テキストで表現してみる 種類 グラム 数 牛 200 2 豚 200 3

    鮭 100 3 冷蔵室 種類 数 キャベツ 2 レタス 3 野菜室 種類 箱入数 数 バニラアイス 6 1 チョコアイス 6 2 冷凍グラタン 3 1 冷凍室 種類 数 にんじん 2 じゃがいも 6 たまねぎ 5 根菜棚 種類 数 レトルトカレー 6 カップラーメン 3 保存食棚
  4. 主キー と データ型 ID 入社日 名前 性別 1 2017-11-01 鈴木一郎

    35 2 2017-11-05 山田太郎 28 3 2017-11-05 山田太郎 28 社員情報 数値型 (自動連番) 日付/ 時刻型 テキスト型 数値型 • データ型 • 誤登録を防ぐ • 無駄な容量を使わない • 並び替えしやすい • 計算に強い 主キー レコードの 識別
  5. 1つのテーブルで管理すると ID 日時 区分 名前 部門 1 2017-11-10 07:50:00 出勤

    鈴木一郎 営業 2 2017-11-10 07:55:00 出勤 山田太郎 総務 3 2017-11-10 18:00:00 退勤 山田太郎 総務 出退勤管理 ちょっと 無駄が多い…
  6. 複数テーブルで管理すると 出退勤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 総務 社員情報 主キーを使って 関連づけると、 無駄なデータを 持たなくて済む リレーションシップ
  7. 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 メタデータ ↓ データについての データ カテゴリー タグ ユーザー情報 投稿 コメント ピンバック
  8. 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
  9. 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 知らずに溜まるので注意
  10. wp_terms テーブルのフィールド term_id name slug term_group 1 WordPress wordpress 2

    イラスト illustration 3 日記 diary 名称 カテゴリID or タグID スラッグ
  11. 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 イラスト リレーションシップのイメージ
  12. 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 データベースから、 このフィールドの データを持ってきてる!
  13. • 指定の投稿者の年間投稿数(公開済み)だけほしい! <?php echo get_archives_num( 2017, 1 ); ?> で呼び出せる関数を自作したり

    ピンポイントでほしいデータだけひっぱれる!(力技) さっきみたやつ! こういうことも できるぞっていう 例なだけなので、 タグがあるなら そっち使おう!