1

这是我想要完成的事情:

我想根据奇数帖子和偶数帖子的不同父包装器是奇数还是偶数来输出不同的帖子。例如,偶数帖子可以输出到类别为的父级,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循环吗?

4

3 回答 3

1

I'm not fully up to speed on the WordPress API so there may or may not be a better way to get post details, but this should work regardless:

<?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>
于 2012-06-07T08:59:46.163 回答
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>
于 2012-06-07T01:59:14.667 回答
0

只需使用 $wp_query->current_post 来获取帖子的当前索引位置:

<?php if (($wp_query->current_post) % 2) $class="evenWrapper"; else $class="oddWrapper"; ?>

<article <?php post_class($class); ?>>
 ...content here ...
</article>
于 2013-09-26T15:45:10.923 回答