如何检查循环中的所有项目都有张贴缩略图?

时间:2012-03-20 作者:digitalclubb

目前我有以下循环:

<?php
$shows_sales = get_posts(array(
    \'post_type\' => \'show_sale\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => 3,
));
$done_image = false;
?>

<ul>
    <?php foreach ($shows_sales as $post) : setup_postdata($post) ?>
        <?php if (!$done_image && (has_post_thumbnail())) : ?>
            <li class="active">
                <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(\'homepage\'); ?></a>
                <?php $done_image = true; ?>
            </li>   
        <?php else : ?>
            <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>   
        <?php endif; ?>
    <?php endforeach; ?>
    <?php wp_reset_query(); ?>
</ul>
如果帖子包含特色图片,它将显示一个“活动”列表项,其他人只在普通列表项中显示标题。

我需要添加的是一个检查,如果没有帖子有一个功能图片,那么在无序列表的顶部插入一个列表项。

我不知道该怎么说“如果没有帖子缩略图,那么显示其他帖子,执行上述操作”

任何帮助都将不胜感激!

2 个回复
最合适的回答,由SO网友:mor7ifer 整理而成

在进行输出之前,请执行以下操作:

$no_thumbnails = true;
foreach( $shows_sales as $p ) {
    if( has_post_thumbnail( $p->ID ) )
        $no_thumbnails = false;
}
然后在循环中,您可以执行以下操作:

<?php if( $no_thumbnails === true ) : ?>
    <!-- Your output here -->
<?php endif; ?>

SO网友:Boone Gorges

如果需要将该项添加到列表的开头,那么需要在回显之前组装HTML。类似这样:

<?php
$shows_sales = new WP_Query(array(
    \'post_type\' => \'show_sale\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => 3
));
$found_post_thumbnail = false;

// Assemble the HTML for the list items first
$list_items = \'\'
if ( $shows_sales->have_posts() ) {
    while ( $shows_sales->have_posts() ) {
        $shows_sales->the_post();

        if ( has_post_thumbnail() ) {
            $list_items .= \'<li class="active"><a href="\' . get_the_permalink() . \'">\' . get_the_post_thumbnail( \'homepage\' ) . \'</a></li>\';
            $found_post_thumbnail = true;
        } else {
            $list_items .= \'<li><a href="\' . get_the_permalink() . \'">\' . get_the_title() . \'</a></li>\';
        }
    }
}

if ( !$found_post_thumbnail ) {
    $list_items = \'<li>THIS IS MY EXTRA LIST ITEM</li>\' . $list_items;
}

echo $list_items;
?>
我把这个换成了WP_Query 请求而不是get_posts()setup_postdata() - WP_Query 更像是一种标准化(并且筑巢安全)的方法。

结束