web-dev-qa-db-fra.com

Répertorie toutes les images d'une seule méta valeur post

J'ai créé un type de message personnalisé avec un téléchargement de galerie d'images. Maintenant, j'essaie d'afficher la galerie au début. C'est ce que j'ai jusqu'à présent qui fonctionne pour afficher 1 image, mais si plusieurs images sont téléchargées, toutes les URL restent bloquées dans la balise src. Donc, je suppose que je devrais parcourir ce tableau et cracher chacun séparément? Serait-ce la voie à suivre et si oui, comment puis-je accomplir cela?

<?php if (have_posts()) :  while (have_posts()) : the_post(); ?>

<?php
echo '<img src="'.get_post_meta($post->ID, 'gallery-upload', true).'">';    
?>

<?php endwhile; else: ?>
 <p><?php _e('No posts were found. Sorry!'); ?></p>
<?php endif; ?>

MODIFIER:

C'est ce que j'ai fini avec qui fonctionne ...

<?php
foreach(get_post_meta($post->ID, 'gallery-upload') as $meta) {
 foreach(explode(',', $meta) as $src) {
  echo '<img src="'.htmlentities($src).'">';
 }
}
?>
1
souporserious

Vous devez réorganiser la manière dont vous stockez les images: faites en sorte que les fichiers téléchargés soient les enfants de cette publication, ne les mettez pas dans un champ méta de publication. Ensuite, obtenez toutes les images avec get_children() . Regardez le gestionnaire intégré pour le shortcode [gallery] pour quelques exemples.

Je devrais aller comme ça:

$args = array( 
   'post_mime_type' => 'image',
   'numberposts'    => -1,
   'post_parent'    => get_the_ID(),
   'post_type'      => 'attachment' 
);

$attached_images = get_children( $args );

foreach ( $attached_images as $image )
{
    // print image
}

Et même si vous souhaitez conserver les champs post-méta, ne stockez pas les URL, utilisez plutôt les ID de pièce jointe. Les URL peuvent changer à tout moment (pensez à une migration de dev vers un site de production).

2
fuxia

Donc, je suppose que je devrais parcourir ce tableau et cracher chacun séparément? Serait-ce la voie à suivre et si oui, comment puis-je accomplir cela?

Oui. get_post_meta(...) devrait renvoyer un tableau sans ce dernier paramètre ou avec la valeur false. Vous auriez alors ...

<?php
$meta = get_post_meta($post->ID, 'gallery-upload');
foreach ($meta as $m) {
    echo '<img src="'.$m.'">'; 
} 
?>
0
s_ha_dum