如何使用$Counter变量将帖子拉入具有不同图像大小的两列中?

时间:2014-12-11 作者:Knott

我有一个自定义模块,它将一个特定类别的6个帖子显示为2列的特色图像。我喜欢每列顶部的第一篇文章显示一个大图像,如下图所示:Module

我已经为第一列和第二列编写了必要的CSS代码,但不知道如何正确使用$计数器变量才能正确显示此模块。

<?php

$td_query = new WP_Query( $td_args );

$counter = 1;

if ( $td_query->have_posts() ) {

    while ( $td_query->have_posts() ) {

        $td_query->the_post();

        if ( $counter == 1 ) {

            $output .= \'<div class="left-col">\'; // first column
            $output .= \'<div class="big-image">\';
            $output .= the_post_thumbnail( \'big\' ); // 1 big image
            $output .= \'</div>\';

        } elseif ( $counter == 2 ) {

            $output .= \'<div class="small-images">\';    
            $output .= the_post_thumbnail( \'small\' ); // 2 small images
            $output .= \'</div>\';

            $output .= \'</div>\';

        } elseif ( $counter == 4 ) { 

            $output .= \'<div class="right-col">\'; // right column
            $output .= \'<div class="big-image">\'
            $output .= the_post_thumbnail( \'big\' ); // 1 big image
            $output .= \'</div>\';

        } else {

            $output .= \'<div class="small-images">\';    
            $output .= the_post_thumbnail( \'small\' ); // 2 small images
            $output .= \'</div>\';

            $output .= \'</div>\';

        }
        $counter++;
    }
}
wp_reset_query();

return $buffer;
上面的代码(简化和伪代码)中我做错了什么?

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

你可以这样做来简化它。IF 我们在这个循环中,要么两个都是左AND 右侧列OR 如果我们的帖子少于4篇,那么至少要有一个左列,这样我们就可以将容器div移到主条件之外:

if ( $td_query->have_posts() ) {

    while ( $td_query->have_posts() ) {

        $td_query->the_post();

        if ( $counter == 1 || $counter == 4 ) {

            $output .= ( $counter == 1 ) ? \'<div class="left-col">\' : \'</div><div class="right-col">\';
            $output .= \'<div class="big-image">\';
            $output .= the_post_thumbnail( \'big\' ); // 1 big image
            $output .= \'</div>\';

        } else {

            $output .= \'<div class="small-images">\';    
            $output .= the_post_thumbnail( \'small\' ); // 2 small images
            $output .= \'</div>\';

        }
        $counter++;
    }

    $output .= \'</div>\'; 
}
略读一下您的原始代码,它看起来应该适合您,所以我不确定您当前在使用它时遇到了什么问题。无论哪种方式,希望上面的工作为您!

结束