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

7

Nachdem die Woocommerce-Dummy-Produkte importiert wurden, 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 Datensätzen? Ist das eine Duplizierung / Redundanz beim Speichern von Daten?

Nehmen wir den post_id=16folgenden Schnappschuss. Wir würden wie unten sehen.

  1. In der Tabelle wp_postshat der Beitrag id = 16 post_type= Anhang und seine guidPunkte zum T1_front_1.jpgBild.

Geben Sie hier die Bildbeschreibung ein

  1. In der Tabelle wp_postmetanimmt die mit post_id = 16 auch das meta_keyas _wp_attachment_fileund meta_valuezeigt auf dasselbe Bild T1_front_1.jpg .

Geben Sie hier die Bildbeschreibung ein

Nam G VU
quelle

Antworten:

11

Ein Anhang ist ein Beitrag

Die Beitragstabelle enthält Informationen zum Anhangsposten .

In WordPress hat jedes hochgeladene Medium einen eigenen Post-Eintrag, wo post_typeist 'attachment'und post_statusist 'inherit'.

Tatsächlich können Sie Anhangsposttypen mithilfe von Funktionen abrufen, mit denen andere Posttypen wie Post, Seite oder ein beliebiges CPT abgerufen werden.

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

Was ist in der postsTabelle

Für jeden Anhangsposten

  • post_titleDie Spalte wird für den Titel des Anhangs verwendet
  • post_excerptwird für die Beschriftung von Anhängen verwendet
  • post_contentwird für die Beschreibung der Anhänge verwendet

Beachten Sie, dass post_parentder Beitragstyp des Anhangs möglicherweise einen hat , 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 ID geladen wurden 10.

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 post_idSpalte auf die Anhangszeile in der Posts-Tabelle bezieht.

Was ist in der postmetaTabelle

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

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

Dies wird verwendet , um die Befestigung URL und den Pfad zu bauen, in Funktionen wie wp_get_attachment_url(), wp_get_attachment_image_src(), get_attached_file()und so weiter.

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

  • Die Bildgröße (unter Tasten 'width'und 'height')
  • Informationen 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 Sie diese Antwort für weitere Details.

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

Beachten Sie, dass die bevorzugte Methode zum Abrufen von Informationen '_wp_attachment_metadata'nicht die Verwendung der allgemeinen, get_post_meta() sondern der spezifischen Methode ist wp_get_attachment_metadata(), da dadurch ein Filter ausgelöst wird.

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, verwenden Sie im Allgemeinen die spezifischen Funktionen und vermeiden Sie das Abrufen von Daten aus der Datenbank. Es ist schwieriger und löst keine Hooks aus, wodurch möglicherweise die Kompatibilität von Kern, Thema und Plugins beeinträchtigt wird.

Es gibt viele Funktionen in WordPress, um mit Anhängen zu arbeiten. Dies sollte Ihnen eine Idee geben ...

In dieser Antwort sind jedoch alle Hauptfunktionen aufgeführt.

gmazzap
quelle
Vielen Dank für Ihre vollständige Erklärung. In Kürze können Sie die Unterschiede bitte noch einmal erklären. Ich bin durcheinander.
Nam G VU
Die 2 Tabellen enthalten unterschiedliche Informationen. Die Post-Tabelle enthält einige Informationen, die Postmeta-Tabelle enthält einige andere Informationen. Um die ganze Geschichte über einen Anhang zu erfahren , benötigen Sie Informationen aus beiden Tabellen.
gmazzap
1

Erstens wird der Pfad der Anhangsdatei angezeigt, zweitens werden die Dateiattribute Größe, Typ, Höhe, Breite usw. angezeigt.

Vielen Dank

Anhang in wp_post zeigt die grundlegenden Details des Anhangs Titel, Zeit, Autor usw.

wp_postmeta zeigt Anhang alle anderen Details, zum Beispiel Anhang wäre Text, PDF, Bild usw., so dass es unterschiedliche Metadaten für verschiedene Arten von Posts gibt.

Vielen Dank

Vee
quelle