Je cherche à personnaliser ma liste de catégories (archive.php) afin qu'elle affiche une image miniature de la première image jointe à chaque message.
Cependant, apparemment, le fichier archive.php est l’un de ceux qui ne prennent pas nativement en charge l’objet attaché. Par exemple, le code ci-dessous fera presque tout ce que je veux (cependant, si aucune pièce jointe n’est trouvée, j’obtiens une image vide, je dois y remédier).
Cependant, j'ai bien peur d'avoir un SELECT dans une boucle comme celle-ci est peut-être trop cher pour ce que j'essaie de faire.
Des idées?
<?php while (have_posts()) : the_post(); ?>
<?php global $wpdb; $attachment_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_parent = '$post->ID' AND post_status = 'inherit' AND post_type='attachment' ORDER BY post_date DESC LIMIT 1"); ?>
<div class="searchItem" style="clear:both;">
<h3 id="post-<?php the_ID(); ?>"><img src="<?php echo wp_get_attachment_url($attachment_id); ?>" class="post-attachment" /><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
<small><?php the_time('l, F jS, Y') ?></small>
<div class="excerpt"><?php echo $post->post_excerpt; ?></div>
<div class="postmetadata">Posted in <?php the_category(', ') ?> | <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></div>
</div>
<?php endwhile; ?>
Vous pouvez utiliser la fonction get_children de WordPress. Bien que je ne pense pas que cela fasse une différence, en termes de performances.
<?php while (have_posts()) : the_post(); ?>
<?php $attachment = array_values( get_children( array( 'post_parent' => $post->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'numberposts' => 1 ) ) ); ?>
<div class="searchItem" style="clear:both;">
<h3 id="post-<?php the_ID(); ?>">
<?php if( $attachment ) echo '<img src="' . wp_get_attachment_url($attachment[0]->ID) . '" class="post-attachment" />'; ?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
<small><?php the_time('l, F jS, Y') ?></small>
<div class="excerpt"><?php echo $post->post_excerpt; ?></div>
<div class="postmetadata">Posted in <?php the_category(', ') ?> | <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></div>
</div>
<?php endwhile; ?>
WP a la fonction principale de voir cela, voir mon post http://wpengineer.com/1735/easier-better-solutions-to-get-pictures-on-your-posts/