我正在开发一个工具,可以在wordpress的页面上显示一些成员。我对大部分部分进行了硬编码,但我正在利用数据库,插入一个运行循环的部分。现在我想同时使用循环和一个名为 flipster (https://github.com/drien/jquery-flipster( 的 jQuery 插件来很好地显示一个轮播,该轮播将显示它们中的每一个。到目前为止一切顺利,唯一的问题是我无法结束循环。我的代码如下:
<div id="carousel">
<ul class="flip-items">
<li>
<?php $temp_query = $wp_query; ?>
<?php query_posts("cat=2"); ?>
<?php while (have_posts()) : the_post(); ?>
<?php the_post_thumbnail(); ?>
<div class="col-md-6">
<?php $socialaddress = get_post_meta( $post->ID, 'name', true );
if ( ! empty( $socialaddress ) ) {
echo '<h4>' . get_post_meta($post->ID, 'name', true) . '</h4>' ;
} ?>
<?php $socialaddress = get_post_meta( $post->ID, 'Company', true );
if ( ! empty( $socialaddress ) ) {
echo '<h6>' . get_post_meta($post->ID, 'Company', true) . '</h6>' ;
} ?>
</div>
<div class="col-md-6">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing</p>
</div>
</li>
<?php
$counter++;
if ($counter % 1 == 0) {
echo '<li>';
}
if ($counter == false) {
echo '</li>';
}
endwhile;
?>
</ul>
</div>
</div>
正如你所注意到的,我的循环将结束,但最后一个元素将打开另一个 li 项,所以我会弄乱我的布局。有什么方法可以防止这种行为吗?
更新:
我放置插件的网站如下:(http://larchedev.com/pip/(。正如你注意到的那样,在最后一个 li 项目之后,它打开了另一个不包含任何东西的 li,因为我放置了一定数量的成员。
您应该尝试缩进代码以更清楚地看到正在发生的事情。
你为什么这样做:
$counter++;
if ($counter % 1 == 0) {
echo '<li>';
}
if ($counter == false) {
echo '</li>';
}
您的$counter未初始化,您的$counter% 1将始终产生$counter。不明白你想在这里实现什么。
无论如何,你为什么不把">
echo '<li><h4>' . get_post_meta($post->ID, 'name', true) . '</h4></li>' ;
那么你就不再需要那 2 个奇怪的 IF。甚至不会中断while循环,因为它会在没有更多帖子时停止。
break
退出循环。或者,您可以使用continue
跳过循环的当前迭代。
<?php
$temp_query = $wp_query;
while (have_posts()) :
....
if ( /* some condition here */ ) {
break; //this will exit your loop, you decide where to put it
}
....
endwhile;
?>