【问题标题】:Require minimum results count in wordpress loop?要求 wordpress 循环中的最小结果计数?
【发布时间】:2017-06-28 21:20:28
【问题描述】:

是否可以在 wordpress 循环中要求最少数量的结果?如果循环没有返回足够的帖子,那么你会显示一个占位符吗?

基本上,我需要在一个网格中显示 8 个帖子。如果没有足够的帖子来填满所有 8 个空格,那么我想在帖子应该出现的位置显示一个灰色框。所以如果只有 6 个帖子,就会有 6 个邮箱和 2 个灰色空框。看来我需要:

  1. 计算循环中返回的帖子数
  2. 如果帖子少于 8 个,则从 8 中减去该计数
  3. 在循环末尾添加 X 个占位符

我只是不确定如何/在哪里添加正确数量的占位符。 这是我得到的:

      <?php $args= array(
        'post_type' => 'beer',
        'posts_per_page' => -1
        );

        $beer2_query = new WP_Query( $args ); if ( $beer2_query->have_posts() ) : 

            $count = $beer2_query->post_count; 
            $i = 1; ?>

            <div class="row"

              <?php while ( $beer2_query->have_posts() ) : $beer2_query->the_post(); ?>

                <div class="col-sm-3">
                    <div class="card">
                        <h3><?php the_title(); ?></h3>
                    </div>
                </div>

             <?php $i++; endwhile; wp_reset_postdata(); ?>

             <?php if ($count < 8) { 
             $placeholder_count = (8 - $count);

// how do I echo out placeholder boxes that equals the placeholder_count total?

             } ?>
          </div>

          <?php endif; ?>  

谢谢!

【问题讨论】:

    标签: php wordpress foreach counter


    【解决方案1】:

    您可以用 this 代替 if 语句,而不是在 while 循环之后使用 if 语句。该循环仅在帖子计数小于 8 时运行,并且将运行多次,但 8 和帖子计数之间的差异是多少倍。您也可以删除 $i 计数器,因为它不会起到任何作用。

    for ($x=0; $x < 8 - $count; $x++) { 
        // Insert placeholder
    }
    

    【讨论】:

    • 谢谢!这对我来说非常有效。我最后替换了我所有的代码,只是把你的代码放在关闭endwhile之后。
    【解决方案2】:

    而不是&lt;?php if ($count &lt; 8) { // add placeholders! } ?&gt;

    试试&lt;?php while($i &gt;= 8) {// add placeholders!; $i++; }}

    这样您就可以使用计数的帖子数,并添加占位符直到等于 8。

    【讨论】:

    • 谢谢!我不知道把这个放在哪里。我尝试替换您提到的行,并将其移入循环并移出,但没有运气。
    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多