我试图将每个4个结果包装在LI中,并重复每4个项目,如
<li>
<div>item 1</div>
<div>item 2</div>
<div>item 3</div>
<div>item 4</div>
</li>
PHP到目前为止....我尝试的循环当然不起作用:)。
if ( $query->have_posts() ) {
$opnews .= '<ul class="newsitems orbit-slides-container">';
$count = 0;
while ( $query->have_posts() ) : $query->the_post();
$post_id = get_the_ID();
$opnews_item_data = get_post_meta( $post_id, 'opnews_item', true );
if ($i%4 == 1) {
$opnews .= '<li>';
}
$opnews .= '<div class="columns large-3 small-12 medium-3">';
$opnews .= '<div class="panel green opacity-change">';
$opnews .= '<h1>' . get_the_title() . '</h1>';
$opnews .= get_the_content_with_formatting();
$opnews .= '</div>';
$opnews .= '</div>';
if ($count%4 == 0) {
$opnews .= '</li>';
}
endwhile;
$opnews .= '</ul>';
wp_reset_postdata();
}
答案 0 :(得分:2)
您正在使用$i
和$count
,因此只选择一个。
然后你必须在你的<li>
之间增加才能让它正常工作。
最后,你应该在完成循环后检查最后<li>
是否已经回显,否则你会遇到麻烦(缺少</li>
)
$array = range(1, 9);
$i = 0;
foreach ($array as $val) {
if ($i%4 == 0) echo '<li>';
$i++;
echo $val;
if ($i%4 == 0) echo '</li>';
}
if ($i%4 != 0) echo '</li>';
输出:
<li>
1 2 3 4
</li>
<li>
5 6 7 8
</li>
<li>
9
</li>
答案 1 :(得分:1)
模数运算符(%
)除以数字并返回余数。因此,您的第if ($i%4 == 1)
行可能不是您所追求的,就好像它是第4行一样,您希望它没有余数。
$count%4 == 0
行对我来说也没有多大意义,因为你没有增加数字。您还没有递增$i
。
尝试以下方法:
if ( $query->have_posts() ) {
$opnews .= '<ul class="newsitems orbit-slides-container">';
$i = 0;
while ( $query->have_posts() ) : $query->the_post();
$post_id = get_the_ID();
$opnews_item_data = get_post_meta( $post_id, 'opnews_item', true );
if ($i%4 == 0) {
if ($i != 0){
$opnews .= '</li>';
}
$opnews .= '<li>';
}
$opnews .= '<div class="columns large-3 small-12 medium-3">';
$opnews .= '<div class="panel green opacity-change">';
$opnews .= '<h1>' . get_the_title() . '</h1>';
$opnews .= get_the_content_with_formatting();
$opnews .= '</div>';
$opnews .= '</div>';
$i++;
endwhile;
$opnews .= '</li>';
$opnews .= '</ul>';
wp_reset_postdata();
}
答案 2 :(得分:0)
您似乎正在混合$i
和$count
。其中一个你正在使用modulous运算符并比较除法后的余数是否为1,另一个你要比较余数是否为0.它们中的任何一个似乎都没有递增(和{{1}看起来不是从您提供的代码段中定义的。
选择一个,$i
,并使用modulous将其与0进行比较,并确保在循环中将其递增:
$count
答案 3 :(得分:0)
它不起作用,因为你永远不会改变计数。 Count始终为0,因此$count % 4 == 0
始终为true。此外,除非它在其他地方,否则您无法定义i
。
仅使用count
(或仅i
)。
if ($count % 4 == 0) {
$opnews .= '<li>';
}
DO STUFF HERE
$count += 1
if ($count % 4 == 0) {
$opnews .= '</li>';
}