循环很疯狂-一行显示错误的帖子计数

时间:2019-07-23 作者:artist learning to code

我有一个循环,在4个项目之后加上一个clear。这是工作得很好,但有一个rebell排,将只采取1个职位。

代码:

            <section class="bonds-funding">
            <h1>Funders</h1>
            <?php the_field( "funding_subtitle" ); ?>

    <?php $loop = new WP_Query( array( \'post_type\' => \'institution\',  ) 
        ); 
        $counter = 0;
    while ( $loop->have_posts() ) : $loop->the_post();
  if ($counter % 4 == 0) :
        echo $counter > 0 ? "</div>" : ""; // close div if it\'s not the first
        echo "<div class=\'clearfix\'>";
    endif;
            $colors = get_field(\'institution_status\');

    if( $colors && in_array(\'funding\', $colors) ){ ?>

                <div class="author-nucleus">
                            <a href="<?php echo get_field(\'institution_website\', $user->ID); ?>">
                                <div class="author-avatar">
                                    <!-- <div class="hexa">
                                        <div class="hex1">
                                            <div class="hex2"> -->
                                                <img src="
                                                <?php echo get_the_post_thumbnail_url( $user->ID ); ?>" />
                                            <!-- </div>
                                        </div>
                                    </div> -->
                                </div>
                            </a>
                                <div class="author-info">
                                    <div class="institution-padding">
                                        <h2>
                                            <?php the_title(); ?>
                                        </h2>
                                    </div>
                                        <hr />
                                        <?php
                                            echo get_field(\'institution_subhead\', $user->ID) ?>
                                        <ul class="nucleus-icons-test">
                                        <?php
                                            $post_id = get_the_ID();
                                get_subjects($post_id, \'post\', 6);
                                ?>
                                        </ul>
                                </div>
                    </div>
                <?php }
                        $counter++;
                         endwhile;
                          wp_reset_query(); ?>

        </section>
前4个帖子在一个div内正确显示,然后下一个div只显示一个帖子,然后再显示两个正确计数的div。

怎么了。。。。?

2 个回复
SO网友:Nathan Powell

对于您的clearfix包装器,您做错了。您有:

$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
if ($counter % 4 == 0) :
 echo $counter > 0 ? "</div>" : ""; // close div if it\'s not the first
 echo "<div class=\'clearfix\'>";
endif;
// BUILDS INTERNAL DIVS
$counter++;
endwhile;
因此,您正在为数字0和数字4的倍数打开div。那么在该语句中,只有当$counter 大于0。因此,您最终关闭div,然后打开一个可能无法关闭的新div。

你需要做两件事。首先,移动关闭divwhile 陈述第二,包装结束语div 以不同的条件。在此更正:

$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
if ($counter % 4 == 0) {
 echo "<div class=\'clearfix\'>";
}
// BUILDS INTERNAL DIVS

/**
 * Closing div for loop 
 *
 * $counter is more than 0 AND $counter plus 1 is multiple of 4
 * OR $counter plus 1 is the total posts found (the plus 1 here is because we start with 0 which counts toward our total)
 */
if ( ($counter > 0 && ($counter+1) % 4 == 0 ) || ($counter+1) == $loop->found_posts ) {
 echo "</div>";
}
$counter++;
endwhile;

SO网友:user3135691

你为什么不:

<style>
.author-nucleus:nth-of-type(4):after {
    clear:both;
    display: table;
    content: "";
}
</style>
在我看来,这就是你基本上所需要的。css的真正美丽!无需使用打开和关闭分区进行weired计数。

解释:这个css规则将在四行/div之后添加一个伪元素,它将清除您的浮点。优点:重量轻,易于更换缺点:/

相关推荐

WordPress Recent Posts - Loop

我非常感谢您的帮助,我在列表项中写了一个循环,但我希望在缩略图上设置宽度和高度,并显示一些专家级的“文本”,但限制其长度。。。<ul> <!-- Define our WP Query Parameters --> <?php $the_query = new WP_Query( \'posts_per_page=3\' ); ?> <!-- Start our WP Query -->