web-dev-qa-db-ja.com

Wp_postsの添付ファイルとwp_postmetaの添付ファイルの違いは何ですか?

Woocommerceダミー商品 がインポートされた後、データベースには異なるテーブルに異なるレコードがあることに気付きますが、THE SAME写真添付ファイルを指しています。

質問はなぜですか?それらのレコードの違いは何ですか?それはデータ保存における重複/冗長性ですか?

下のスナップショットのようにpost_id=16を取りましょう。以下のようになります。

  1. テーブルwp_postsでは、id = 16の投稿にpost_type = attachmentがあり、そのguidT1_front_1.jpg imageを指しています。

enter image description here

  1. テーブルwp_postmetaでは、post_id = 16のものもmeta_key_wp_attachment_fileとみなし、meta_value同じイメージT1_front_1.jpgを指しています。

enter image description here

7
Nam G VU

添付ファイル投稿です

Postsテーブルには、添付ファイルpostに関する情報が含まれています。

WordPressでは、アップロードされたすべてのメディアに独自の投稿エントリがあります。ここでpost_type'attachment'post_status'inherit'です。

実際には、投稿、ページ、CPTなど、他の投稿タイプを取得するために使用される関数を使用して添付の投稿タイプを取得できます。

それはWP_Queryget_posts()およびget_post()を含みます。

postsテーブルの内容

添付ファイルごとに

  • post_title列は添付ファイルに使用されますtitle
  • post_excerptは添付ファイルに使用されますcaption
  • post_contentは添付ファイルに使用されますdescription

添付ファイルの投稿タイプには、添付ファイルのアップロード元の投稿のIDを指すpost_parentがある場合があります。

例えば:

get_posts( 'post_type=attachment&post_parent=10' );

IDが10の投稿の編集ページからロードされた添付ファイルのすべての投稿オブジェクトを取得します。

添付ファイルはだけではありませんPost

しかし、単に投稿テーブルに収まらないメディア(特に画像)に関する情報があります。

この情報はすべてpostmetaテーブルに格納されています。ここで、post_id列はpostsテーブルの添付行を表しています。

postmetaテーブルの内容

たとえば、"alt"属性は、キー'_wp_attachment_image_alt'を持つメタフィールドに格納されます。

キー'_wp_attached_file'を持つメタフィールドには、アップロードされたファイルの(コンテンツフォルダへの)相対パスが含まれています。

これは、 wp_get_attachment_url()wp_get_attachment_image_src()get_attached_file() などのような関数で、添付ファイルのURLとパスを作成するために使用されます。

最後に、フィールド'_wp_attachment_metadata'にはさまざまな情報が含まれています(データベース内の直列化配列)。

  • 画像サイズ(キー'width''height'の下)
  • 中間サイズに関する情報

中間サイズ

実際、画像がアップロードされるたびに、WordPressは異なるサイズの画像の異なるコピーを作成します。

詳しくはこの答えを読んでください。

"sizes"フィールドのキー'_wp_attachment_metadata'には、生成されたすべての画像に関する情報(作成されたファイル、サイズ(幅と高さ)など)を含む配列が含まれています。

'_wp_attachment_metadata'から情報を取得するための望ましい方法は、commonget_post_meta()ではなく、特定の wp_get_attachment_metadata() を使うことです。

あなたが特定の生成された画像についての情報に興味があるなら、関数 image_get_intermediate_size() は便利でしょう。

特定の機能を使用する

一般的に言って、添付ファイルに関する情報が必要な場合は、特定の機能を使用し、データベースからデータを取得しないようにします。それはより難しく、フックを引き起こすことはなく、おそらくコア、テーマ、そしてプラグインの互換性を壊します。

添付ファイルを扱うためのWordPressにはたくさんの関数があります、 これ あなたにアイディアを与えるべきです...

ただし、主な機能はすべてこの回答に記載されています。

11
gmazzap

1つは添付ファイルのパス、2つ目はファイル属性のサイズ、タイプ、高さ、幅などです。

ありがとう

wp_postの添付ファイルは、添付ファイルの基本詳細タイトル、時間、作者などを表示します。

wp_postmetaは添付ファイルを表示します。例えば添付ファイルはテキスト、pdf、画像など、添付ファイルは他のすべての詳細なので投稿の種類ごとに異なるメタデータを持ちます。

ありがとう

1
Vee