このシリーズのパート1では、WordPressをローカルにインストールする方法と、WordPressデータベースをVertabeloにインポートする方法を示しました。この記事では、WordPressデータベースのテーブルを詳しく見ていきます。
WordPressデータベースモデルとダッシュボードの概要
前のパートでは、WordPressデータベースをオンラインデータベースモデリングツールにインポートしました。記録として、データベースの構造は次のとおりです。
始める前に理解しておくべきWordPressデータベースモデルに関する重要な事実がいくつかあります:
- 各WordPressサイトは、まったく同じデータベース構造を使用しています。 11のテーブルが含まれており、すべてのWordPressサイトがバックグラウンドでそれらを使用しています。ほとんどのWordPressプラグインも、データベースモデルを変更せずにデータベースを使用します。モデルは、すべての異なるプラグインに対応するのに十分な柔軟性を備えている必要があります。もちろん、プラグインの作成者は、データ構造が大幅に異なる場合、またはプラグインに大量のデータが格納されている場合に、特定のプラグインのカスタムテーブルを追加できます。
- WordPressデータベースは外部キーの制約がありません 。これは、WordPressが外部キーをサポートしていないMyISAMストレージエンジンを使用しているためです。テーブルは、接続されていない「外部キー」のような値を格納する属性を持つことでこれを回避します。そのため、外部キーの制約はデータベースによってチェックされません。たとえば、
post_author
wp_postsの属性
テーブルは、wp_usersの「ID」属性への「参照」です。
テーブル。 - ほとんどのテーブルは単一列の主キーを使用します。これらは、単に「ID」(
wp_users 内)という名前が付けられています。
およびwp_posts
表)、またはmeta_id
/umeta_id
(メタテーブル内:wp_postmeta
、wp_commentmeta
およびwp_usermeta
)、またはテーブル名とサフィックス「_id」(他のすべてのテーブル)の組み合わせ。これらのルールの唯一の例外は、wp_term_relationshipsです。
テーブル。主キーは次の2つの属性で構成されます。object_id
およびterm_taxonomy_id
。主キーまたは主キーの一部である属性は、bigint(20)タイプです。単一属性の主キーでも、auto-incrementプロパティが「Yes」に設定されています。
投稿とページ
WordPressを使用する主な理由は、コンテンツを作成および操作して一般に公開することです。そのために、WordPressは2つのコンテンツタイプを提供します:ページ および投稿 。
ページ 静的コンテンツを表示するために使用されます 。タグやカテゴリを使用せず、日付順にリストされていません。また、コメントやソーシャルメディアの共有も許可されていません。ページはサブページを持つことができます。 会社概要 ページはこのタイプの良い例です。
一方、投稿 日付別に一覧表示され、カテゴリを使用して整理できます およびタグ 。投稿は時系列のおかげでRSSフィードで使用できます。投稿に「サブ投稿」を含めることはできませんが、コメントやソーシャルメディアの共有は可能です。投稿は基本的にブログ投稿です。 WordPressはブログプラットフォームから進化したので、これは理解できます。
WordPressページのコンテンツの背後にある主要なテーブルはwp_postsと呼ばれます
:
WordPressはwp_postsを使用します
ページ、投稿、添付ファイルを保存するテーブル。このテーブルは、ほとんどのコンテンツが保存されているページのコアと見なすことができます。添付ファイルは実際にはディスクに保存され、レコードは wp_postsに保存されることを指摘することが重要です。
テーブルには、それに関する詳細情報(誰がいつアップロードしたかなど)が保持されます。
wp_postsのフィールド
表は次のとおりです:
-
post_author
–wp_usersへの参照
表、投稿の作成者を示します。 -
post_date
–レコードがテーブルに挿入された日時。 -
post_date_gmt
–レコードがテーブルに挿入されたGMT/UTCの日時。 -
post_content
–投稿の実際の内容。 -
post_title
–投稿のタイトル。 -
post_excerpt
–コンテンツの概要。 -
post_status
–現在の投稿ステータス。 WordPressは、「公開」、「将来」、「ドラフト」、「保留中」、「プライベート」、「ゴミ箱」、「自動ドラフト」、「継承」の8つのデフォルトステータスを使用します。 -
comment_status
–単一の投稿またはページ全体でコメントのオンとオフを切り替えます。 「開く」と「閉じる」の2つの可能な値があります。 -
ping_status
–投稿でピンバックとトラックバックが許可されているかどうかを識別します。comment_status
のように 、「open」と「closed」の値のみを含めることができます。 -
post_password
–投稿の表示に使用されるパスワード(オプション)。 -
post_name
–post_title
の人間が読めるURL 。 -
to_ping
–「\n」で区切られたWordPressがpingbackを送信する必要があるURLのリスト。 -
pinged
–WordPressがpingbackを送信したURLのリスト。「\n」で区切られています。 -
post_modified
–投稿が変更された最新の日時。 -
post_modified_gmt
–post_modified
のGMT/UTC日付 。 -
post_content_filtered
–プラグインが高価なポストコンテンツ変換をキャッシュするために使用します。 -
post_parent
–親の投稿を参照します。 -
guid
–投稿のグローバル一意識別子。その永続的なURL。 -
menu_order
–コンテンツの注文に使用されます。 -
post_type
–レコードのタイプ。 「post」、「page」、「attachment」、またはユーザー定義のカスタムタイプの値を含めることができます。 -
post_mime_type
–post_type =attachment
の投稿に対してのみ定義されたアップロードファイルのタイプ 。 「image」、「application / pdf」、「application/msword」などの値を含めることができます。 -
comment_count
–投稿のコメント、ピングバック、トラックバックの数。
これがwp_postsのスナップショットです
「ニコラ・テスラについて」ページを追加した後の表:
wp_postsを見ると
表を見ると、ページのいくつかのバージョンが表示されています。 ID =1
のレコード post_status =publish
があります 、投稿がすべての人に表示されることを意味します。 comment_status =closed
およびping_status=closed
この投稿ではコメントとpingが無効になっていることを示します。
投稿やページに関する追加情報は、 wp_postmetaに保存されます。
テーブル:
この表の列は次のとおりです。
-
meta_id
–テーブルの主キー。 -
post_id
–wp_postsへの参照
テーブル。 -
meta_key
–meta_value
の説明 属性。 -
meta_value
–保存されている実際の値。
wp_postmeta
テーブルは、 wp_postsに保存できないすべての情報が含まれる場所です
テーブルが保存されます。これは、キーと値のペアとして保存されます。これは、 entity-attribute-valueと呼ばれることが多い手法です。 (EAV)。このテーブルは、カスタムニーズのプラグインで使用できます。
WordPressの分類法
分類法 基本的に物事をグループ化することを指す派手な言葉です。 WordPressには、投稿をグループ化するための組み込みの分類法がいくつかあります。たとえば、カテゴリ およびタグ 組み込みのWordPress分類法です。独自のカスタム分類法をWordPressに追加することもできます。
分類法とその用語は、 wp_termsというテーブルに保持されます。
、 wp_term_taxonomy
、および wp_term_relationships
。
wp_terms
表には、WordPressサイトでオブジェクトを分類するために使用される用語のリストが格納されています:
このテーブルには、すべてのタグ名とカテゴリ名、およびカスタム分類法の用語が含まれています。属性は次のとおりです。
-
term_id
–テーブルの主キー。 名前コード> –用語の名前。
スラッグ
–name
のURL 。-
term_group
–用語をグループ化するために使用されます。
サンプルサイトのwp_termsの内容は次のとおりです。
テーブル:
用語は、 wp_term_taxonomyを使用して分類に割り当てられます
テーブル:
表の属性は次のとおりです。
-
term_taxonomy_id
–テーブルの主キー。 -
term_id
–wp_termsへの参照
テーブル。 分類法
–分類名。説明
–その特定の分類法における用語の説明。親
–wp_termsの親用語への参照
テーブル。カウント
–wp_posts内のオブジェクトの数
この分類法でこの用語を使用する表。
wp_term_taxonomy
表を使用すると、異なる分類法で同じ用語を再利用できます。 term_id =1
のレコードに注意してください taxonomy =category
があります 、他のレコードには taxonomy =post_tag
があります 。
wp_postsに保存されたオブジェクトを関連付けるため
およびwp_term_taxonomy
テーブルでは、WordPressは wp_term_relationshipsを使用します
テーブル:
これは、複数の属性で構成されるキーを持つモデル内の唯一のテーブルであることに注意してください。
wp_term_relationships
テーブルには次の属性があります:
-
object_id
–wp_postsへの参照
テーブル。 -
term_taxonomy_id
–wp_term_taxonomyへの参照
テーブル。 -
term_order
–特定のオブジェクトの用語の順序。
ここには、 wp_term_taxonomyの6つのレコードを接続する6つのレコードがあります。
投稿のあるテーブル( object_id =6
。
コメントとWordPressデータモデリング
WordPressページにコンテンツを配置することができました。それは素晴らしいことですが、ほとんどの場合、一般の人々からフィードバックを得たいと思っています。それがコメント機能の役割です。
投稿へのコメントを表示するには、[コメントを残す]を使用するか、[Xコメント]をクリックします(Xは投稿のコメント数を表します)。
私たちの最初の投稿にはすでに1つのコメントがあります。クリックすると、ピングバックによる自動コメントであることがわかります。その投稿にもう1つコメントを追加します:
現在、投稿に対する2つのコメントが表示されていますが、データベース内のすべての背後にあるものは何ですか?
テーブル名から、 wp_comments
テーブルは、WordPressページにコメントを保存するために使用されます:
属性はほとんど自明ですが、それでもいくつかを詳しく見ていきます。
comment_post_ID
wp_postsへの参照です
テーブル;コメントを受け取った投稿を示します。最初のコメントについては、それが実際にピングバックであり、「作成者」が別の投稿であることがわかります。 2番目のコメントでは、私が著者であることがわかります。 comment_agent
にも注意してください コメントの投稿に使用されるシステムとコンピューターに関する基本的な情報が含まれています。
モデル内の3つのメタテーブルすべての背後にある主なアイデアは、プライマリテーブルに保存したくないデータを保存することです。 wp_commentmeta
wp_commentsに関連しています
wp_postmetaと同じ方法でテーブルを作成します
テーブルはwp_postsに関連しています
テーブル。
WordPressユーザーを見る
私たちのページがオンラインになった後、誰でもそれを見ることができます。 WordPressユーザーは、許可状況に応じて、当サイトとそのコンテンツを変更できるユーザーです。
次に、 wp_usersを確認します。
およびwp_usermeta
MySQLデータベースのテーブル。
予想どおり、 wp_users
上記の表には、WordPressサイトに登録されているすべてのユーザーの基本データが格納されています。 user_pass
に注意してください は暗号化されており、NewUserには user_activation_key
があります edrkusicのフィールドが空のときに属性が入力されました。
wp_usersにリストされている属性
表は、WordPressサイトの wp_usermetaで期待されるものです。
テーブルは、特定のプロジェクトに固有の値を格納するために使用されます:
たとえば、 umeta_id =25
のレコードに注目してください。 値「いくつかの経歴情報」が含まれています 、NewUserの編集中にダッシュボードに入力したのと同じテキスト。 user_id
そのレコードの属性には値2があります 、 wp_usersのNewUserのIDに対応します
テーブル。明らかに、 user_id
wp_usersへの参照です
テーブル。
WordPressのリンクとオプション
wp_linksの背後にある考え方
表は他のサイトへのリンクを保存するためのものです:
他のサイトへのリンクを持つことは、ブログ時代の初めに非常に人気がありました。今日では、それはますます使用されていません。 WordPressバージョン3.5以降、リンク管理は管理インターフェースからも削除されました。それでも、このテーブルは古いバージョンとの互換性を提供するために保持されています。
wp_options
テーブルには、WordPressのインストール、サイト構成、テーマ、プラグイン、ウィジェットに関するデータが格納されています。
また、一時的にキャッシュされたデータを保存するためにも使用されます。 wp_usermeta にあるように、EAVロジックもこのテーブルにあります。
、 wp_postmeta
およびwp_commentmeta
。属性option_name
属性option_value
がキーの役割を果たし、 対応する値です。表の他の2つの属性は、主キー属性 option_id
です。 およびautoload
、オプションがデータベースから自動的にロードされるかどうかを制御します。
WordPressのデータベースモデルの評価
WordPressの背後にあるデータベースモデルは、いくつかの優れたデータベース設計ルールと規則に従っていません。特定の目的のためにデータベースを設計するとき、必要なすべての機能を事前に知っていれば、それらのすべてのルールに従うことができます。しかし、WordPressは誰もが思いつく可能性のあるすべてのものをカバーする必要があるため、外部キーを犠牲にしてEAVを使用することは行わなければならないことです。 ID属性にすべてのテーブルで同じ名前を付け、「外部キー」でも同じようにします。たとえば、 post_author
は使用しません wp_postsで
テーブルですが、 users_id
を使い続けます 。これ以外に、WordPressデータベースがその目的にとって本当に素晴らしいモデルであることに同意する必要があります。
どう思いますか?コメントセクションでお知らせください。