带有一根导柱的两列环状结构

时间:2012-11-06 作者:Mayeenul Islam

我从互联网(我忘了网站)上得到了一个关于两栏后视图的循环。它也有一个很好的CSS。但现在的问题是跳过这个。

<?php $counter = 1; ?> 
                <?php query_posts( \'cat=3&showposts=6\' ); //Find whether the catID is 3 ?>
            <?php while ( have_posts() ) : the_post() ?>  
                <?php /* Two Column Support get class */ ?> 
            <?php $class = ( $counter % 2  ? \' one\' : \'\' ) ?> 
                <?php /* Two Column output open the div class */ ?> 
            <div class="column<?php echo $class;// echo $first; ?>"> 
            <?php news_format(); ?>
            </div> <!-- End Two Column Support close div class -->
<?php $counter++; //Update counter ?>
它将我的帖子打印成两列,如:

=========
| 1 | 2 |
---------
| 3 | 4 |
---------
| 5 | 6 |
=========
这很好
但我想这样打印:

=========
|   1   |
---------
| 2 | 3 |
---------
| 4 | 5 |
---------
| 6 | 7 |
=========
我需要做什么修改
我无法将任何自定义限制传递到WordPress的自定义循环中<?php while ( have_posts() ) : the_post() ?>. 这是一个自定义主题。我做到了,但问题是,它表现得像:

=========
|   1   |
---------
| 1 | 2 |
---------
| 3 | 4 |
---------
| 5 | 6 |
=========
Here 是我的全部代码。

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

为添加最后一个测试1 === $counter. 并将其放入主题的函数中functions.php 像这样:

/**
 * Alternating output.
 *
 * @param  string $first  Returned on first call.
 * @param  string $odd    Returned on every odd call.
 * @param  string $even   Returned on every even call.
 * @return string
 */
function first_odd_even( $first = \'first\', $odd = \'odd\', $even = \'even\' )
{
    static $counter = -1;
    $counter += 1;

    if ( 0 === $counter )
        return $first;

    if ( $counter % 2 )
        return $odd;

    return $even;
}
现在,在循环中,只需在需要的地方调用该函数:

<?php 

query_posts( \'cat=3&showposts=6\' ); //Find whether the catID is 3

while ( have_posts() ) : the_post()
?>
<div class="column<?php echo first_odd_even(); ?>"> 
<?php news_format(); ?>
</div>
允许在PHP代码中使用换行符。以及任何有助于可读性的地方的空间

我建议不要使用query_posts(). 阅读:When should you use WP_Query vs query_posts() vs get_posts()?

结束

相关推荐

trouble with my loop

我正在尝试从我的博客页面中排除类别。我已经把代码都设置好了,根据法典,这应该行得通 $string = \'-\' . implode( \',-\', explode( \' \', $data[\'exclude_categories\'] ) ); 测试时,上述行会将其打印到屏幕上-主页-最新新闻这是我试图从博客页面中删除的两个测试类别。然后我像这样开始我的查询 <?php query_posts($query_string . \'&cat=\' . $string);?