[英]Outputting odd or even posts in PHP with different parent wrappers — Wordpress
这是我要完成的工作:
我要输出不同的帖子,具体取决于它们是奇数还是偶数,并且对于奇数帖子和偶数帖子使用不同的父包装。 例如,即使柱可以被输出到一个父与类的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
循环周围, while
使用modulus
运算符检查if
语句。 我的第一个猜测是创建一个else
语句,并在它们不均匀的情况下将另一个父包装起来。 但是我遇到了它被困在while
循环中并每次输出父包装器的问题。
我如何从这里继续将帖子输出到另一个父容器中? 我是否需要再进行一次while
循环?
我没有完全掌握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>
实际上,这确实很简单。 是的,您还需要一个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>
只需使用$ wp_query-> current_post即可获取帖子的当前索引位置:
<?php if (($wp_query->current_post) % 2) $class="evenWrapper"; else $class="oddWrapper"; ?>
<article <?php post_class($class); ?>>
...content here ...
</article>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.