En ce qui concerne ma précédente question sur les légendes de shortcode , il ne me semble pas que le texte réel d’une légende soit stocké ailleurs que dans le contenu de la publication dans le shortcode lui-même.
J'aurais pensé que wp_get_attachment_metadata
stockerait les informations pour une pièce jointe, mais ce n'est pas le cas.
Ai-je tort? Ou WordPress ne stocke-t-il la légende nulle part?
Oui, il stocke la légende à sa place dans la base de données. Je ne peux pas citer l'emplacement exact, mais dans Wordpress, les "pièces jointes" sont un type de message et stockent chaque pièce jointe comme un message. Pour un type de publication en pièce jointe, il traite la légende de l'image comme the_excerpt
, la description de l'image comme the_content
et le titre de l'image comme ... the_title
.
où $post_id
est la publication actuelle, ce code affichera toutes les pièces jointes d'une publication, ainsi que leurs descriptions et légendes de titres.
$q = new WP_Query( array(
'post_parent' => $post_id,
'post_type' => 'attachment'
));
if($q->have_posts()){
while($q->have_posts()){
$q->the_post();
?>
<h3><?php the_title(); ?></h3>
<?php
if ( wp_attachment_is_image( $post->id ) ) {
$att_image = wp_get_attachment_image_src( $post->id, "large");
?>
<img src="<?php echo $att_image[0];?>" width="<?php echo $att_image[1];?>" height="<?php echo $att_image[2];?>" class="attachment-large" alt="<?php $post->post_excerpt; ?>" />
<?php
}
// caption
the_excerpt();
// description
the_content();
}
}
wp_reset_query();
Les pièces jointes sont tous les enfants de la publication à laquelle ils sont attachés. Vous pouvez l'utiliser pour créer votre propre code de galerie personnalisé. Ils ont également beaucoup de données dans leurs champs personnalisés, tels que les dimensions d'image, les données EXIF, etc. Ils peuvent même être commentés.
Vous pouvez prendre le code de la boucle intérieure et le placer dans attachment.php dans votre thème. Il suffit de vérifier que je n'ai pas fait de fautes de syntaxe auparavant.