Woocommerceダミー商品 がインポートされた後、データベースには異なるテーブルに異なるレコードがあることに気付きますが、THE SAME写真添付ファイルを指しています。
質問はなぜですか?それらのレコードの違いは何ですか?それはデータ保存における重複/冗長性ですか?
下のスナップショットのようにpost_id=16
を取りましょう。以下のようになります。
wp_posts
では、id = 16の投稿にpost_type
= attachmentがあり、そのguid
はT1_front_1.jpg
imageを指しています。wp_postmeta
では、post_id = 16のものもmeta_key
を_wp_attachment_file
とみなし、meta_value
は同じイメージT1_front_1.jpg
を指しています。Postsテーブルには、添付ファイルpostに関する情報が含まれています。
WordPressでは、アップロードされたすべてのメディアに独自の投稿エントリがあります。ここでpost_type
は'attachment'
、post_status
は'inherit'
です。
実際には、投稿、ページ、CPTなど、他の投稿タイプを取得するために使用される関数を使用して添付の投稿タイプを取得できます。
それはWP_Query
、get_posts()
およびget_post()
を含みます。
posts
テーブルの内容添付ファイルごとに
post_title
列は添付ファイルに使用されますtitlepost_excerpt
は添付ファイルに使用されますcaptionpost_content
は添付ファイルに使用されますdescription添付ファイルの投稿タイプには、添付ファイルのアップロード元の投稿のIDを指すpost_parent
がある場合があります。
例えば:
get_posts( 'post_type=attachment&post_parent=10' );
IDが10
の投稿の編集ページからロードされた添付ファイルのすべての投稿オブジェクトを取得します。
しかし、単に投稿テーブルに収まらないメディア(特に画像)に関する情報があります。
この情報はすべて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にはたくさんの関数があります、 これ あなたにアイディアを与えるべきです...
ただし、主な機能はすべてこの回答に記載されています。
1つは添付ファイルのパス、2つ目はファイル属性のサイズ、タイプ、高さ、幅などです。
ありがとう
wp_postの添付ファイルは、添付ファイルの基本詳細タイトル、時間、作者などを表示します。
wp_postmetaは添付ファイルを表示します。例えば添付ファイルはテキスト、pdf、画像など、添付ファイルは他のすべての詳細なので投稿の種類ごとに異なるメタデータを持ちます。
ありがとう