我正在寻求自定义我的类别列表(archive.php),以便它显示附在每篇文章上的第一幅图像的缩略图
然而,显然是档案。php文件是本机不支持附件对象的文件之一。例如,下面的代码将完成我想要的大部分工作(尽管如果没有找到附件,我会得到一个空白图像,我需要修复它)。
然而,我担心在这样的循环中使用SELECT对于我正在尝试的操作来说可能太贵了。
有什么想法吗?
<?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; ?>
最合适的回答,由SO网友:sorich87 整理而成
您可以使用WordPress函数get\\u children。虽然我不认为这有什么不同,但从性能角度来看。
<?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; ?>