web-dev-qa-db-fra.com

Quelle est la différence entre une pièce jointe dans wp_posts et une pièce jointe dans wp_postmeta?

Après que les produits factices Woocommerce soient importés, je remarque que dans la base de données, il existe différents enregistrements dans différentes tables, mais pointez sur la même pièce jointe photo.

La question est pourquoi? Quelles sont les différences entre ces enregistrements? Est-ce une duplication/redondance dans le stockage de données?

Prenons post_id=16 comme ci-dessous instantané. Nous verrions comme ci-dessous.

  1. Dans la table wp_posts, l'id = 16 post a post_type = pièce jointe et sa guid pointe sur T1_front_1.jpg image.

enter image description here

  1. Dans la table wp_postmeta, celle avec post_id = 16 prend également le meta_key en tant que _wp_attachment_file et meta_value pointe vers la même image T1_front_1.jpg.

enter image description here

7
Nam G VU

Une pièce jointe est un message

Le tableau posts contient des informations sur la pièce jointe post.

Dans WordPress, chaque média téléchargé possède sa propre entrée de publication, où post_type est 'attachment' et post_status est 'inherit'.

En fait, vous pouvez obtenir des types de publication en pièce jointe à l'aide de fonctions utilisées pour obtenir d'autres types de publication, telles que publication, page ou tout type de CPT.

Cela inclut WP_Query, get_posts() et get_post().

Que contient la table posts

Pour chaque poste d'attachement

  • La colonne post_title est utilisée pour la pièce jointe titre
  • post_excerpt est utilisé pour la pièce jointe légende
  • post_content est utilisé pour la pièce jointe description

Notez que le type de publication de pièce jointe peut avoir un post_parent qui pointe vers l'ID de la publication à partir de laquelle la pièce jointe a été téléchargée.

Par exemple:

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

Récupérez tous les objets de publication pour les pièces jointes chargées à partir de la page de modification de la publication avec l'ID 10;

Une pièce jointe est pas seulement une publication

Cependant, il existe des informations sur les médias (en particulier les images) qui ne correspondent tout simplement pas au tableau des publications.

Toutes ces informations sont stockées dans la table postmeta, où la colonne post_id fait référence à la ligne de pièce jointe dans la table posts.

Que contient la table postmeta

Par exemple, l'attribut "alt" est stocké dans un champ méta contenant la clé'_wp_attachment_image_alt'.

Le champ méta avec la clé'_wp_attached_file'contient le chemin relatif (vers le dossier de contenu) du fichier téléchargé.

Cela est utilisé pour créer l'URL et le chemin de la pièce jointe, dans des fonctions telles que wp_get_attachment_url() , wp_get_attachment_image_src() , get_attached_file() et ainsi de suite.

Enfin, le champ '_wp_attachment_metadata' contient différentes informations (dans un tableau sérialisé de la base de données):

  • La taille de l'image (sous les touches 'width' et 'height')
  • Informations sur tailles intermédiaires

Tailles intermédiaires

En fait, chaque fois qu'une image est téléchargée, WordPress en crée différentes copies dans différentes tailles.

Veuillez lirecette réponsepour plus de détails.

La clé "sizes" dans le champ '_wp_attachment_metadata' contient un tableau contenant des informations sur toutes les images générées: le fichier créé, la taille (largeur et hauteur), etc.

Notez que le moyen privilégié d’obtenir des informations à partir de '_wp_attachment_metadata' n’utilise pas le commun} _ get_post_meta() mais le wp_get_attachment_metadata() spécifique, car il déclenche un filtre.

Si vous souhaitez obtenir des informations sur une image générée spécifique, la fonction image_get_intermediate_size() sera pratique.

Utiliser des fonctions spécifiques

De manière générale, si vous avez besoin d’informations sur une pièce jointe, utilisez les fonctions spécifiques et évitez d’extraire des données de la base de données; il est plus difficile et ne déclenche pas de points d'ancrage, brisant éventuellement la compatibilité du noyau, du thème et des plugins.

Il y a beaucoup de fonctions dans WordPress pour travailler avec des pièces jointes, ceci devrait vous donner une idée ...

Cependant, toutes les fonctions principales sont énumérées dans cette réponse.

11
gmazzap

La première montre le chemin du fichier de la pièce jointe, la seconde est la taille, le type, la hauteur, la largeur, etc. des attributs de fichier.

Merci

pièce jointe dans wp_post affiche les détails de base de la pièce jointe: titre, heure, auteur, etc.

wp_postmeta montre pièce jointe tous les autres détails. Par exemple, pièce jointe serait un texte, un fichier PDF, une image, etc., de manière à avoir différentes métadonnées pour différents types de publication.

Merci

1
Vee