这是我想要完成的事情:
我希望输出不同的帖子,具体取决于它们是奇数还是使用不同的父包装,用于奇数帖子和偶数帖子。例如,可以将偶数帖子输出到具有evenWrapper
类的父级,并且可以将奇数帖子输出到具有oddWrapper
类的父级。
我使用modulus
运算符获得了整体理论。我陷入困境的地方实际上是在不同的父包装中包含偶数或奇数帖子。以下是我到目前为止的情况:
<?php if ( have_posts() ):
$c = 0;
?>
<div class="six columns alpha">
<?php
while ( have_posts() ) : the_post();
if($c % 2 == 0) : ?>
<?php /* posts with even numbers are outputted here */ ?>
<?php
endif;
$c++;
endwhile;
?>
</div>
<?php endif; ?>
以上代码适用于输出偶数帖子。如您所见,父包装器位于while
循环周围,并使用if
运算符检查modulus
语句。我的第一个猜测是创建一个else
语句,如果它们不是偶数,则将不同的父项包装在它们周围。但我遇到的问题是它被while
循环捕获并且每次都输出父包装。
我如何从这里继续将帖子输出到另一个父容器?我是否必须制作另一个while
循环?
答案 0 :(得分:1)
我还没有完全掌握WordPress API的速度,因此可能有或没有更好的方法来获取帖子详细信息,但这应该可行:
<?php
$oddPosts = array();
$evenPosts = array();
$i = 0;
?>
<?while(have_posts()) : the_post()?>
<?
$post = the_content(); // etc...
if(++$i % 2 == 0) {
array_push($evenPosts, $post);
} else {
array_push($oddPosts, $post);
}
?>
<?endwhile;?>
<div class="wrapper odd">
<?foreach($oddPosts as $post):?>
<?= $post ?>
<?endforeach?>
</div>
<div class="wrapper even">
<?foreach($evenPosts as $post):?>
<?= $post ?>
<?endforeach?>
</div>
答案 1 :(得分:0)
else
声明。这是一个例子:
<?php if ($c % 2 === 0): ?>
<div class="evenWrapper">
<?php else: ?>
<div class="oddWrapper">
<?php endif; ?>
...
</div>
您也可以这样做:
<?php
$class = $c % 2 === 0 ? 'evenWrapper' : 'oddWrapper';
?>
<div class="<?php echo $class; ?>">
</div>
答案 2 :(得分:0)
只需使用$ wp_query-&gt; current_post获取帖子的当前索引位置:
<?php if (($wp_query->current_post) % 2) $class="evenWrapper"; else $class="oddWrapper"; ?>
<article <?php post_class($class); ?>>
...content here ...
</article>