このWordPressサイトを立ち上げてから1ヶ月余りが経ちました。立ち上げる前にローカル環境でWordPressを少し触ったことがあり、WordPressがPHPで構築されていることは知っていましたが、その仕組みについてはあまり理解していませんでした。投稿記事はビジュアルエディタを使って書いており、時々コードエディタを見ても、内部でどのような処理が行われているのかはわかりませんでした。しかし、先週スクールの先生からWordPressとデータベースの関係について教わり、自分でもいろいろ調べてみたので、ここにメモとして記録しておきます。
WordPressデータベースの構造
WordPressは、MySQLデータベース管理システムを利用しています。
という訳で、PHP MyAdminを開いてみました。データベースの構造(スキーマ)はこのようになっていました1。
- wp_commentmeta: コメントのメタデータを格納するテーブル
- wp_comments: コメント情報を保持するテーブル
- wp_links: リンク情報を管理するテーブル
- wp_options: オプション設定を保存するテーブル
- wp_postmeta: 投稿のメタデータを格納するテーブル
- wp_posts: 投稿情報を管理するテーブル
- wp_terms: ターム(カテゴリやタグなど)の情報を保持するテーブル
- wp_termmeta: タームのメタデータを格納するテーブル
- wp_term_relationships: タームと投稿の関連を管理するテーブル
- wp_term_taxonomy: タームのタクソノミー情報を保持するテーブル
- wp_usermeta: ユーザーのメタデータを格納するテーブル
- wp_users: ユーザー情報を管理するテーブル
投稿内容を管理するテーブルであるwp_postsにはWordPressWebサイトのコンテンツに関連するすべてのデータが格納されています。ナビゲーションメニュー項目、メディアファイル、画像、添付ファイルも保存されます。プラグインによって使用されるコンテンツデータもこのテーブルにあります。
Post_type は、上記のデータを分類するwp_post内のテーブル列(カラム)で、この分類によってユーザー側はデータベースクエリを使用して特定の種類のデータを要求することができます。
とても重要なカラムなので主な分類名と内容を書いておきます。
post_typeの分類名と内容
post
: 通常のブログ投稿。
記事やブログエントリーがこのカテゴリに分類されます。これにはテキスト、画像、リスト、引用など、様々な形式のコンテンツが格納されています。page
: 固定ページ。attachment
: メディアファイルや画像などの添付ファイル。revision
: 投稿や固定ページの編集履歴。custom_css
: テーマカスタマイザーで追加されたカスタムCSS。
PHP MyAdminを見ることで、WordPressでの編集内容がMySQLのデータベースにどのように格納されているのか。その構造を知ることが出来ました。では、このデータはどのように扱われ、ウェブページとして表示されているのか、これも備忘録として残しておきます。
WordPressとデータベースとPHPとの関連
- サーバーとブラウザのやり取り:
- ユーザーがブラウザで特定のWordPressサイトを表示したいと思った場合、ブラウザはサーバーにページのデータを要求します。
- サーバーはPHPを介してデータベースに問い合わせ、必要な情報を取得します。
- データベースの役割:
- WordPressのデータベースには、投稿やページの内容、カテゴリ、タグ、ユーザー情報などが格納されています。
- データベースはMySQLを使用しており、PHPがデータを取得しています。
- PHPの役割:
- サーバーサイドで動作するプログラミング言語であるPHPは、WordPressのコンテンツの用意や調整を行います。
- PHPはデータベースから情報を取得し、HTML・CSS・JavaScriptを生成してページを完成させます。
- ブラウザの表示:
- サーバーが完成したデータ(HTML・CSS・JavaScript)をブラウザに送信します。
- ブラウザはこれを読み込んでウェブページとして表示します。
WordPressはデータベースから情報を取得し、PHPを使って生成しているわけですね。
今更ながらではありますが、このことをぼんやりとしか理解していませんでした。なにしろWordPressではビジュアルエディタでブロックを選ぶだけで編集が出来てしまうからです。
では、ビジュアルエディタでブロックを選んでページを編集しているとき、内部ではどのようなことが行われているのでしょうか?
WordPressページの生成の仕組み
- ビジュアルエディタでブロックを追加:
- ビジュアルエディタでタイトルやテキスト、画像、リンクなどの要素をブロックで追加すると、これらの要素は、設定した内容に基づいてデータベースに保存されます。
- PHPとデータベースの連携:
- ページを表示すると、サーバー側のPHPがデータベースから必要な情報を取得します。
- タイトルやテキストの内容は、データベースから取得されたものです。
- HTMLの生成:
- PHPは取得したデータをもとに、HTMLコードを生成します。例えば、タイトルが「ワードプレス」であれば、PHPは
<h1>ワードプレス</h1>
といったHTMLを生成します。
- PHPは取得したデータをもとに、HTMLコードを生成します。例えば、タイトルが「ワードプレス」であれば、PHPは
- ブラウザへの表示:
- 生成されたHTMLコードは、ブラウザに送信され、ウェブページとして表示されます。
このようにWordPressではPHPによってデータベースと連携されているのですね。
そして、その役割を担うのが、header.php, footer.php, functions.phpです。
データベースとのやり取りを担当するPHPファイル
header.php
:header.php
はウェブページのヘッダー部分を定義します。通常、ナビゲーションメニューやロゴ、ページのタイトルなどが含まれます。- データベースから取得した情報(例:サイト名、メニュー項目)を表示するために使用されます。
footer.php
:footer.php
はウェブページのフッター部分を定義します。通常、著作権情報、リンク、ウィジェットエリアなどが含まれます。- データベースから取得した情報を表示するために使用されることもあります。
functions.php
:functions.php
はテーマの機能をカスタマイズするためのファイルです。PHPの関数を定義することができます。- データベースから情報を取得し、テーマの動作を制御するために使用されます。
「functions.php」は、style.cssの読み込みなどWordPressの色々な処理を記述するための重要なファイルであることはなんとなく解っていたのですが、これでfunctions.phpの役割を深く理解することが出来ました。
これで、前に書いた記事の課題点が解決されそうです。という訳で、次回に続きます。