退出 php 中的循环 wordpress 环境



我正在开发一个工具,可以在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;
    ?>
    

    最新更新