Blog

ブログ

WordPress

WordPressデータベース初級編

WordPressは見た目だけ触っていてもサイト制作はできる。

ただ、データベースを理解すると、

  • 実装アイデアが広がる
  • トラブル対応できる
  • AIを使った実装精度が上がる

という変化がある。

特に今は、「コードを全部書ける」よりも、

「どういうデータ構造にしたいか説明できる」ことが重要になっている。

🧩 WordPressは「ファイル + データベース」でできている

WordPressは大きく2つで構成されている。

ファイル側

サーバー上に存在するデータ。

  • PHP
  • テーマ
  • プラグイン
  • CSS
  • JavaScript
  • アップロード画像

など。

データベース側

動的データを保存している。

  • 投稿
  • 固定ページ
  • ユーザー情報
  • サイト設定
  • カスタムフィールド

など。

データの流れ

入力

データベースへ保存

WordPressが取得

画面表示

つまり、

WordPress = DBのデータを表示するシステム

という理解になる。

📦 データベースの基本構造

データベースはExcelの表に近いイメージ。

テーブル

データを入れる箱。

例:

wp_posts

カラム(列)

IDpost_titlepost_type

レコード(行)

IDpost_titlepost_type
1お知らせpost

🏗️ WordPressの代表的なテーブル

wp_posts

以下をまとめて管理している。

  • 投稿
  • 固定ページ
  • カスタム投稿
  • リビジョン

wp_users

  • ログイン情報
  • メールアドレス
  • パスワード

など。

wp_options

  • サイトURL
  • テーマ設定
  • プラグイン設定

など。

wp_terms

  • カテゴリー
  • タグ

など。

📝 投稿も固定ページも実は同じ場所に保存されている

見た目では別管理に見えるが、実際は全部:wp_postsに保存されている。

違いは post_type で判別される。

post_titlepost_type
お知らせpost
会社概要page
制作実績Aworks

💬 SQLとは何か

SQLは、Structured Query Languageの略。

データベースへ命令するための言語。

SQLでできること

SELECT

データ取得。

SELECT * FROM wp_posts;

意味:

wp_posts の中身を全部取得

WHERE

条件絞り込み。

SELECT * FROM wp_posts
WHERE post_type = 'page';

意味:

固定ページだけ取得

INSERT

データ追加。

INSERT INTO wp_sample (name)
VALUES ('田中');

UPDATE

データ更新。

UPDATE wp_sample
SET name = '佐藤'
WHERE id = 1;

DELETE

データ削除。

DELETE FROM wp_sample
WHERE id = 1;

⚙️ WordPressも裏側でSQLを使っている

投稿一覧を表示するときも、内部ではSQLが実行されている。

イメージ:

SELECT *
FROM wp_posts
WHERE post_type = 'post'
AND post_status = 'publish';

つまり、

WordPress = SQLを自動実行しているシステム

とも言える。

🔄 WP_Query と SQL の関係

WordPressでよく使う:

$args = [
'post_type' => 'post',
'posts_per_page' => 10,
];

これは内部でSQLに変換される。

対応イメージ

posts_per_page

LIMIT
order

ORDER BY

🚀 データベースを学ぶと変わること

実装アイデアが広がる

実装できるものの幅が広がる。

  • 掲示板
  • 予約管理
  • 会員管理
  • ポイント機能
  • 日報管理

など。

トラブル対応できる

リビジョン理解によって、データ復旧できるケースがある。

例:

  • LP編集時に真っ白になった
  • 投稿が消えたように見える

など。

AI活用が強くなる

重要なのはコード暗記ではなく、

どういうデータを保存したいか

を説明できること。

AIへの依頼例

悪い例:

掲示板作って

良い例:

WordPressで独自テーブルを使った掲示板を作りたい。
name / message / created_at を保存したい。
ショートコードで表示したい。

🧱 独自テーブルとは

WordPress標準以外に自分で追加するテーブル。

wp_simple_bbs

保存データ例

idnamemessagecreated_at

独自テーブルでできること

  • 掲示板
  • 予約システム
  • CSV出力
  • 集計レポート
  • 会員管理

など。

🛠️ WordPressでの定番実装

dbDelta()

WordPressでは以下でテーブル作成するのが定番。

dbDelta($sql);

テーブル名の注意点

$wpdb->prefix

を使う。

理由:

wp_

固定ではないため。

⚠️ SQLの危険な命令

TRUNCATE

テーブルの中身を全削除。

DROP TABLE

テーブル自体を削除。

DELETE

条件付きでデータ削除。

注意

DROP TABLE wp_posts;

を実行すると投稿データが消える。

本番環境では特に注意。

📚 学習メモ

まずは以下を見る。

  • phpMyAdmin
  • wp_posts
  • wp_postmeta
  • wp_options

最初は SELECT を試すだけでも理解が深まりそう。

💡 重要な理解

SQLを全部暗記する必要はない。

重要なのは、データがどう保存されているかを理解すること。

AI時代は特に、データ構造を説明できる人が強い。

📝 ちなみに:ShopifyとWordPressの違い

Shopifyは、テーマ構造や設定がJSONやファイル側にまとまっている。

CLIでpullすると、

  • sections
  • templates
  • settings

などがファイルとして見えるため、「コードを見ると構造が分かる」感覚がある。

一方WordPressは、実データはDBに保存されるという違いがある。

例えば:

  • 投稿本文
  • 固定ページ
  • ACF
  • ユーザー情報

などはファイルではなく、MySQL(DB)側に入っている。

テーマ側は:

<?php the_content(); ?>

のように、「DBから取得して表示する」役割になっている。

イメージ比較

ShopifyWordPress
ファイル中心DB中心
JSON構造が多いMySQL保存
コードで構造が見えやすいDBを見る文化
テーマ開発感が強いCMS感が強い
UI構造寄りデータ管理寄り

かなりざっくり言うと、

Shopify = ファイル中心
WordPress = データベース中心

という理解。