Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WordPressのデータベース構造を見てみよう
Search
*you
November 23, 2017
1
2.5k
WordPressのデータベース構造を見てみよう
WordBench 長野 vol.13 でお話した内容です。
*you
November 23, 2017
Tweet
Share
More Decks by *you
See All by *you
「ブログを1年継続する」という壁を越えるために
ateitexe
1
2.6k
超雑記ブログならではの運営の裏側について
ateitexe
1
1.5k
WordPressで個人ブログを運営しよう! -アウトプットのススメ-
ateitexe
4
2.8k
Featured
See All Featured
A designer walks into a library…
pauljervisheath
204
24k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
98
Faster Mobile Websites
deanohume
305
30k
A Philosophy of Restraint
colly
203
16k
Being A Developer After 40
akosma
87
590k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Producing Creativity
orderedlist
PRO
341
39k
Speed Design
sergeychernyshev
25
670
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Rails Girls Zürich Keynote
gr2m
94
13k
Side Projects
sachag
452
42k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Transcript
WordPressの データベース構造を見てみよう
*you 非IT企業のWeb担で、 業務アプリ作ってる人 娘がふたり( 7歳 & 2歳 ) ateitexe.com @ateitexe
私の仕事 Via: http://www.iconsdb.com/ 出荷管理 業務アプリ DB 生産管理システム 帳票出力 生産計画 工場
ゴリッゴリの Winユーザー! 製造部
WordPressとのかかわり • 会社のコーポレートサイト(一部WP)の保守 • 社内ネットワークにて社員向け情報ページの運営 • 自分のブログ(現在6年目) 個人ブログ コーポレートサイト 社内サイト
MS Office系の書籍を執筆しています • ブログがきっかけで、執筆業をはじめました • 2018年1月ごろ、「Access レポート&フォーム徹底解説(仮)」発売します
今日おはなしすること 1. データベースとは? 2. リレーションシップのおはなし 3. WPのデータベース構造 4. どんないいことがあるの? できるだけ
むずかしくないように がんばります… _(:3 」∠)_
1データベースとは? • WordPressは、2つの要素から成り立っている • テーマ群 … 「見た目」の構築 • テンプレートファイル •
画像 • データベース … 「情報」を格納 • タイトル、記事の中身などのテキスト情報 今日はこっちのお話
買ってきた食材、どうしますか? おなじところに ぜんぶ 入れちゃう?
それぞれ適切な場所に保管しますよね? すっごく データベース! にんじん じゃがいも たまねぎ レトルト類 カップラーメン 缶詰 おにく
さかな アイス 冷凍食品 キャベツ レタス
テキストで表現してみる 種類 グラム 数 牛 200 2 豚 200 3
鮭 100 3 冷蔵室 種類 数 キャベツ 2 レタス 3 野菜室 種類 箱入数 数 バニラアイス 6 1 チョコアイス 6 2 冷凍グラタン 3 1 冷凍室 種類 数 にんじん 2 じゃがいも 6 たまねぎ 5 根菜棚 種類 数 レトルトカレー 6 カップラーメン 3 保存食棚
ざっくりいうと • 情報を整理・グループ化してあるべきところにきれいに収める • さがしやすい! • いっぱいはいる!!
データベースの基礎用語 テーブル 縦方向: フィールド 横方向: レコード 見出し: フィールド名 テーブルが 集まったものが
データベース レコード 単位で 増減
主キー と データ型 ID 入社日 名前 性別 1 2017-11-01 鈴木一郎
35 2 2017-11-05 山田太郎 28 3 2017-11-05 山田太郎 28 社員情報 数値型 (自動連番) 日付/ 時刻型 テキスト型 数値型 • データ型 • 誤登録を防ぐ • 無駄な容量を使わない • 並び替えしやすい • 計算に強い 主キー レコードの 識別
2リレーションシップのおはなし • ただ保管するだけじゃない、データベースのスゴイところ • テーブルとテーブルを「関連付ける」 • 少ないデータ量でたくさんの情報を扱える
1つのテーブルで管理すると ID 日時 区分 名前 部門 1 2017-11-10 07:50:00 出勤
鈴木一郎 営業 2 2017-11-10 07:55:00 出勤 山田太郎 総務 3 2017-11-10 18:00:00 退勤 山田太郎 総務 出退勤管理 ちょっと 無駄が多い…
複数テーブルで管理すると 出退勤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 総務 社員情報 主キーを使って 関連づけると、 無駄なデータを 持たなくて済む リレーションシップ
3WordPressのデータベース構造 • テーブル数は、12個(4.8.3現在) • たいてい、インストール時に設定するだけで見たことない人が多い…? • ざっくりした概要だけでも知ってると便利(だと思う)! • バックアップへの理解も進むんじゃないかな
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 メタデータ ↓ データについての データ カテゴリー タグ ユーザー情報 投稿 コメント ピンバック
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
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 知らずに溜まるので注意
wp_terms テーブルのフィールド term_id name slug term_group 1 WordPress wordpress 2
イラスト illustration 3 日記 diary 名称 カテゴリID or タグID スラッグ
wp_term_relationships テーブルのフィールド object_id term_taxonomy_id term_order 1 3 2 1 2
2 リンク先ID (記事ID) カテゴリID or タグID
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 イラスト リレーションシップのイメージ
データベースの最適化と修復 プラグイン ・WP-DBManager ・WP-Optimize 削除した ・コンテンツ ・リビジョン ・スパムコメント 最適化/修復 ※容量は自動で減らない
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 データベースから、 このフィールドの データを持ってきてる!
• 検索結果を投稿記事のみにする(固定ページなどを除外) カスタマイズの意味がわかる! さっきみたやつ! via: http://notnil-creative.com/blog/archives/1996
• 指定の投稿者の年間投稿数(公開済み)だけほしい! <?php echo get_archives_num( 2017, 1 ); ?> で呼び出せる関数を自作したり
ピンポイントでほしいデータだけひっぱれる!(力技) さっきみたやつ! こういうことも できるぞっていう 例なだけなので、 タグがあるなら そっち使おう!
★ さいごに • データベースは、WordPressの「中身」 • ファイル群ももちろん大事だけど、ないと成り立たないモノ • 知らなくても使えるけど、知っていたほうがより理解が深まる! • バックアップ大事!
• データベースの中身もちゃんとバックアップしておこうね!
ありがとうございました!