web-dev-qa-db-de.com

Was ist der Unterschied zwischen einem Anhang in wp_posts und einem Anhang in wp_postmeta?

Nach dem Import der Woocommerce-Dummy-Produkte stelle ich fest, dass in der Datenbank unterschiedliche Datensätze in unterschiedlichen Tabellen vorhanden sind, die jedoch auf den GLEICHEN Fotoanhang verweisen.

Die Frage ist warum? Was sind die Unterschiede zwischen diesen Aufzeichnungen? Ist das eine Vervielfältigung/Redundanz bei der Datenspeicherung?

Nehmen wir post_id=16 als folgenden Schnappschuss. Wir würden wie folgt sehen.

  1. In der Tabelle wp_posts hat der Beitrag mit der ID = 16 post_type = Anhang und seine guid zeigt auf das T1_front_1.jpg-Bild.

enter image description here

  1. In Tabelle wp_postmeta nimmt der mit post_id = 16 auch den meta_key als _wp_attachment_file und meta_value zeigt auf dasselbe Bild T1_front_1.jpg.

enter image description here

7
Nam G VU

Ein Anhang ist ein Beitrag

Die Tabelle posts enthält Informationen zum Anhang post.

In WordPress hat jedes hochgeladene Medium einen eigenen Beitragseintrag, wobei post_type'attachment' und post_status'inherit' ist.

Tatsächlich können Sie Anhangposttypen mithilfe von Funktionen abrufen, die zum Abrufen anderer Posttypen wie Post, Seite oder eines beliebigen CPT verwendet werden.

Dazu gehören WP_Query, get_posts() und get_post().

Was ist in posts Tabelle

Für jeden Anhangsposten

  • Die Spalte post_title wird für den Anhang Titel verwendet.
  • post_excerpt wird für den Anhang caption verwendet
  • post_content wird für Anhang Beschreibung verwendet

Beachten Sie, dass der Beitragstyp des Anhangs möglicherweise einen post_parent enthält, der auf die ID des Beitrags verweist, von dem der Anhang hochgeladen wurde.

Zum Beispiel:

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

Rufen Sie alle Post-Objekte für Anhänge ab, die von der Bearbeitungsseite des Posts mit der ID 10 geladen wurden.

Ein Anhang ist nicht nur ein Beitrag

Es gibt jedoch Informationen für Medien (insbesondere Bilder), die einfach nicht in die Beitragstabelle passen.

Alle diese Informationen werden in der Postmeta-Tabelle gespeichert, wobei sich die Spalte post_id auf die Anhangszeile in der Posts-Tabelle bezieht.

Was ist in postmeta Tabelle

Beispielsweise wird das Attribut "alt" in einem Metafeld gespeichert, das den Schlüssel'_wp_attachment_image_alt'enthält.

Das Metafeld mit dem Schlüssel'_wp_attached_file'enthält den relativen Pfad (zum Inhaltsordner) der hochgeladenen Datei.

Dies wird verwendet, um die URL und den Pfad des Anhangs in Funktionen wie wp_get_attachment_url() , wp_get_attachment_image_src() , get_attached_file() usw. zu erstellen.

Schließlich enthält das Feld '_wp_attachment_metadata' verschiedene Informationen (in einem serialisierten Array in der Datenbank):

  • Die Bildgröße (unter den Tasten 'width' und 'height')
  • Angaben zu Zwischengrößen

Zwischengrößen

Tatsächlich erstellt WordPress jedes Mal, wenn ein Bild hochgeladen wird, verschiedene Kopien des Bildes in verschiedenen Größen.

Bitte lesen Siediese Antwortfür weitere Details.

Der Schlüssel "sizes" im Feld '_wp_attachment_metadata' enthält ein Array mit Informationen zu allen generierten Bildern: die erstellte Datei, die Größe (Breite und Höhe) usw.

Beachten Sie, dass die bevorzugte Methode zum Abrufen von Informationen aus '_wp_attachment_metadata' nicht die commonget_post_meta() verwendet, sondern die spezifische wp_get_attachment_metadata() , da sie einen Filter auslöst.

Wenn Sie an Informationen zu einem bestimmten generierten Bild interessiert sind, ist die Funktion image_get_intermediate_size() hilfreich.

Verwenden Sie bestimmte Funktionen

Wenn Sie Informationen zu einem Anhang benötigen, sollten Sie im Allgemeinen die spezifischen Funktionen verwenden und das Abrufen von Daten aus der Datenbank vermeiden. Es ist schwieriger und löst keine Hooks aus, wodurch möglicherweise die Kompatibilität mit Core-, Theme- und Plugins beeinträchtigt wird.

Es gibt eine Menge von Funktionen in WordPress, um mit Anhängen zu arbeiten, dies sollte Ihnen eine Idee geben ...

In dieser Antwort sind jedoch alle Hauptfunktionen aufgeführt.

11
gmazzap

Erstens wird der Dateipfad des Anhangs angezeigt, zweitens werden die Dateiattribute Größe, Typ, Höhe, Breite usw. angezeigt.

Vielen Dank

anhang in wp_post zeigt den Anhang mit den grundlegenden Details Titel, Uhrzeit, Autor usw.

wp_postmeta zeigt anhang alle anderen details zum beispiel anhang wären text, pdf, bild usw. es hat also unterschiedliche metadaten für verschiedene posttypen.

Vielen Dank

1
Vee