我从互联网(我忘了网站)上得到了一个关于两栏后视图的循环。它也有一个很好的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 是我的全部代码。
最合适的回答,由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()?