WordPressは、ウェブサイトで作成するすべてのコンテンツを保存、取得、表示するためにデータベースを使用します。これには、投稿、固定ページ、コメントなどが含まれます。
データベースは、ウェブサイトの’ユーザーに関する情報や、サイトを動かすさまざまなサイト設定の保存にも使用されます。
Webサーバーのレッスンで学んだように、WordPressはMySQLを使用します。MySQLは、人気のある多くのウェブアプリケーションで使用されている、無料でオープンソースのデータベース管理システムです。
WordPressデータベースとのやり取り
WordPressデータベースを直接操作する方法はいくつかあります。
ほとんどのローカル開発環境やホスティング会社では、phpMyAdminという無料ツールを使用しています。phpMyAdminは、ウェブブラウザーを使ってWordPressデータベースを操作できるウェブベースのツールです。
phpMyAdminの代替として、Adminerというツールがあります。Adminerは、ウェブサイトにアップロードできる単一のPHPファイルで、phpMyAdminと同様のインターフェースを提供します。一部のホスティング会社やローカル開発環境では、phpMyAdminの代わりにAdminerを使用しています。
最後に、どちらにもアクセスできない場合は、SQL Buddyというプラグインをインストールすることもできます。
これは、phpMyAdminやAdminerと同様のインターフェースを提供する無料のWordPressプラグインですが、WordPressダッシュボード内で動作します。
SQL Buddyを使用する場合は、使い終わったらプラグインを無効化して削除することを忘れないでください。ウェブサイトにインストールしたままにしておくと、セキュリティ上のリスクになる可能性があります。
データベーステーブル
このレッスンでは、PhpMyAdminを使用してデータベーステーブルを調べます。
WordPressデータベースは、多数のテーブルで構成されています。各テーブルには、ウェブサイトの異なる種類のデータが保存されます。
各テーブルには同じ接頭辞が付いており、これはwp-config.phpファイルで定義されています。デフォルトの接頭辞はwp_ですが、WordPressのインストール時に好きなものへ変更できます。
まず、コンテンツ管理において最も重要なテーブルを見てみましょう。
wp_postsとwp_postmeta
wp_postsテーブルは、おそらくWordPressサイトで最も重要なテーブルであり、ウェブサイトの投稿、固定ページ、その他のカスタム投稿タイプに関する情報を保存します。wp_postsテーブルの各行は、1つの投稿を表します。wp_postmetaテーブルを使うと、各投稿に関する追加情報を保存できます。投稿メタは、カスタムフィールドと呼ばれることもよくあります。
wp_commentsとwp_commentmeta
wp_commentsテーブルには、投稿や固定ページへのコメントに関する情報が保存されます。誰かが投稿や固定ページにコメントすると、そのコメントはこのテーブルに保存されます。wp_commentsテーブルの各行は、1つのコメントを表します。wp_commentmetaテーブルには、各コメントに関する追加情報を保存できます。
wp_userとwp_usermeta
wp_usersテーブルには、ウェブサイトの’ユーザーに関するすべての情報が保存されます。wp_usersテーブルの各行は、1人のユーザーを表します。他のメタテーブルと同様に、wp_usermetaテーブルには各ユーザーに関する追加情報を保存できます。
投稿、コメント、ユーザーを操作する関数
すべてのWordPressデータベーステーブルには、そのテーブルを操作するために使用できる関数があります。
これらの関数は、WordPress Database APIの一部です。
これらの関数はすべて、WordPress開発者向けドキュメントの「Code Reference」にある検索機能を使って見つけることができます。
一般的に、WordPressデータベースを操作するために使用できる関数は、すべて同様のパターンに従います。
挿入関数、更新関数、削除関数があります。
通常、これらは同じ名前を持ち、wp_という接頭辞の後にアクション、続いてテーブル名が付けられます。
例として、投稿用のこれらの関数を見てみましょう。
wp_insert_postは新しい投稿を作成する関数です。wp_update_postは既存の投稿を更新する関数です。wp_delete_postは投稿を削除する関数です。
次に、テーブルからすべてのレコード、または単一のレコードを取得する関数があります。
通常、これらは同じ名前を持ち、get_という接頭辞の後に、テーブル名の単数形または複数形が付けられます。
たとえば、get_postsは投稿の集合を取得する関数です。
また、get_postは単一の投稿を取得する関数です。
これらの各関数には通常、返される結果を絞り込むために使用できる複数のパラメーターがあります。
さらに、通常はメタフィールドの挿入、更新、削除を行うために、メタテーブルを操作する関数もあります。
通常、これらはアクション、続いてテーブル名の単数形、最後に_metaを付けた同じような名前になります。
たとえば投稿の場合、add_post_metaはメタフィールドを挿入する関数です。
同様に、update_post_metaはメタフィールドを更新する関数で、delete_post_metaはメタフィールドを削除する関数です。
wp_terms、wp_termmeta、wp_term_relationships、wp_term_taxonomy
wp_terms、wp_termmeta、wp_term_relationships、wp_term_taxonomyテーブルは、WordPressサイトのカテゴリーとタグを管理するテーブルです。
wp_termsテーブルには、ウェブサイトのタームに関する情報が保存されます。wp_termsテーブルの各行は、1つのタームを表します。内部的には、カテゴリーとタグはいずれもタームです。
それらがカテゴリーになるかタグになるかを決定するのは、関連付けられているタクソノミーです。このタクソノミーはwp_term_taxonomyテーブルに保存されます。
wp_term_relationshipsテーブルには、タームとその親オブジェクト(投稿、固定ページ、カスタム投稿タイプなど)の関係が保存されます。
最後に、wp_termmetaテーブルには各タームに関する追加情報を保存できます。
タームとタクソノミーを操作する関数
投稿、コメント、ユーザーを操作する関数と同様に、タームやタクソノミーを操作する関数もあります。これらは、WordPressのCode Referenceでtermまたはtaxonomyを検索すると見つけることができます。
wp_options
wp_optionsテーブルには、ウェブサイトの設定に関する情報が保存されます。wp_optionsテーブルの各行は、特定の設定を表します。たとえば、siteurlオプションにはウェブサイトのURLが保存され、blogdescriptionオプションにはウェブサイトのキャッチフレーズが保存されます。wp_optionsテーブルには、ウェブサイトで有効化されているテーマやプラグインに関する情報も保存されます。
データはwp_optionsテーブルにキーと値の形式で保存されます。キーはオプションの名前で、値はオプションの値です。
wp_optionsテーブルには、シリアライズされたデータを保存することもできます。シリアライズされたデータとは、複数の値を含む文字列です。シリアライズされたデータは、データの配列やオブジェクトの保存によく使用されます。よい例が有効化されているプラグインの一覧で、これはシリアライズされた配列として保存されます。
オプションを操作する関数
Options APIは通常、Settings APIとともに使用され、コア、プラグイン、テーマを通じてWordPressダッシュボードの設定ページを作成します。Options APIは、add_option、update_option、delete_optionなど、wp_optionsテーブルを操作するための関数を提供します。
wp_links
wp_linksテーブルには、ウェブサイトのリンクに関する情報が保存されます。リンクは、WordPress 3.5で削除された機能です。
ただし、Links Managerプラグインを使ってこの機能を再び有効化できるため、後方互換性のためにこのテーブルは残されています。
まとめ
WordPressデータベース内のテーブルを正しく識別して操作できることは非常に役立つスキルであり、WordPressで開発する際にWordPressの仕組みをより深く理解するのに役立ちます。