我需要在wordpress循环中的每个第二项添加div
。目前我正在使用下面的代码(有效),但我认为有一个更好/更清洁的方法来做到这一点。我如何更改以下代码?关于在哪里看的任何建议都会很棒,因为这对我来说似乎很混乱。提前谢谢。
<?php while ( have_posts() ) : the_post(); ?>
<?php
$col_select = $data['example_select'];
if ($col_select == '2 Col') {
get_template_part( '/templates/article/content', 'standard' ); ?>
<?php if( $wp_query->current_post == '1') { ?>
</div><div class="row">
<?php } if( $wp_query->current_post == '3') { ?>
</div><div class="row">
<?php } if( $wp_query->current_post == '5') { ?>
</div><div class="row">
<?php } if( $wp_query->current_post == '7') { ?>
</div><div class="row">
<?php } if( $wp_query->current_post == '9') { ?>
</div><div class="row">
<?php } ?>
答案 0 :(得分:4)
if( $wp_query->current_post % 2 != 0)
应该这样做。
请参阅:http://php.net/manual/en/language.operators.arithmetic.php
编辑:当然,如果您删除了一个帖子,它会中断,但这是基于您当前的代码。这个位在哪里循环?你可以用计数器来做。
答案 1 :(得分:1)
甚至
if($wp_query->current_post % 2)
会对%2执行此操作,因为1 = true而0 = false
答案 2 :(得分:0)
<?php while ( have_posts() ) : the_post(); ?>
<?php
$col_select = $data['example_select'];
if ($col_select == '2 Col')
{
get_template_part( '/templates/article/content', 'standard' ); ?>
<?php if(($wp_query->current_post % 2) == 1) { ?>
</div><div class="row">
<?php } ?>
current_post % 2
如果是奇数,将返回1。
答案 3 :(得分:0)
您应该尽可能避免打开和关闭<?php ... ?>
标记。这抑制了能够读取您的代码。其次,如果你想每隔一行结束div
,那么就使用模数测试,如下所示:
<?php
while ( have_posts() ) : the_post();
$col_select = $data['example_select'];
if ($col_select == '2 Col') {
get_template_part( '/templates/article/content', 'standard' );
if ( $wp_query->current_post % 2 == 1 ) {
echo "</div><div class=\"row\">";
}
}
endwhile;
?>
但是,真正干净的方法是将显示推迟到您在此处呈现的模板。如果不知道你在get_template_part
使用了什么,就很难说你如何传递适当的数据(这是你查询的“下两个”部分。
答案 4 :(得分:0)
模数方法是正确的,但如果$wp_query->current_post
未返回增量数,则给出的选项会中断。
最好的办法是创建另一个变量来存储你循环的次数,如下所示。
<?php
$x = 1;
while ( have_posts() ) : the_post();
$col_select = $data['example_select'];
if ($col_select == '2 Col')
{
get_template_part( '/templates/article/content', 'standard' );
if(($x % 2) == 1) { ?>
</div><div class="row">
<?php }
$x++;
}
endwhile;
以上意味着,对于2 Col
匹配的每一秒结果,您都会输出</div><div class="row">
。