【问题标题】:php query with multiple loop templates具有多个循环模板的 php 查询
【发布时间】:2018-04-18 20:10:56
【问题描述】:

我正在尝试为我的骨骼主题 wordpress 网站创建一个模板,该网站具有以下网格。

GRID VISUAL

我似乎无法弄清楚如何从数据库中调用我的所有帖子并使用多个循环输出它们,这些循环带有我用骨骼 CSS 设置的不同模板

示例查询:

<?php $args = array(
        'post_type' => array ( 'post' ),
        'post_count' => 4
        );

        $query = new WP_query ( $args );
        if ( $query->have_posts() ) {
                    $count = 0;
        }
?>

<section class="blog-posts grid">

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

    if ( get_post_type() == 'post' && $count == 0 ) {

      include( locate_template( 'includes/homepage-1of2.php' ));

        $count++;           

    }

    endwhile; ?>

</section>

然后在第二次运行时增加计数。所发生的只是显示同一个帖子(共 12 个)。

提前感谢您的帮助

编辑:

使用来自 mtr.web 的代码

我现在有了这个

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

  if ( get_post_type() == 'post') {
      switch($count) {
          case 0:
              include( locate_template( 'includes/homepage-1of1.php' ));
              break;
          case 1:
              include( locate_template( 'includes/homepage-1of2.php' ));
              break;
          case 2:
              include( locate_template( 'includes/homepage-1of2.php' ));
              break;
                    case 3:
              include( locate_template( 'includes/homepage-1of3.php' ));
              break;
          case 4:
              include( locate_template( 'includes/homepage-1of3.php' ));
              break;
          case 5:
              include( locate_template( 'includes/homepage-1of3.php' ));
              break;   
          default:
              include( locate_template( 'includes/homepage-1of1.php' ));
      }
      $count++;           
  }

endwhile; ?>

这很棒并且很简短,但我现在需要为我的所有帖子有效地运行这个循环,所以一次又一次地复制这 6 个帖子结构 - 有没有办法告诉循环运行那些模板定位器?

【问题讨论】:

    标签: php loops grid output


    【解决方案1】:

    我不确定您的模板文件在哪里,或者您希望做什么确切,但希望这可以为您指明正确的方向。使用switch/case comparison,您可以根据您已经实现的计数器更改正在使用的输出和/或模板:

    编辑: 通过在每次达到 6 的倍数时将计数器重置为 0,您可以对所有帖子重复相同的模式:

    <?php while ( $query->have_posts() ) : $query->the_post();
    
      if ( get_post_type() == 'post') {
          $count++;
          switch($count) {
              case 1:
                  include( locate_template( 'includes/homepage-1of1.php' ));
                  break;
              case 2:
                  include( locate_template( 'includes/homepage-1of2.php' ));
                  break;
              case 3:
                  include( locate_template( 'includes/homepage-1of2.php' ));
                  break;
              case 4:
                  include( locate_template( 'includes/homepage-1of3.php' ));
                  break;
              case 5:
                  include( locate_template( 'includes/homepage-1of3.php' ));
                  break;
              case 6:
                  include( locate_template( 'includes/homepage-1of3.php' ));
                  count = 0;
                  break;   
              default:
                  include( locate_template( 'includes/homepage-1of1.php' ));
          }           
      }
    
    endwhile; ?>
    

    【讨论】:

    • 天哪,你是生命的奇迹!
    • @TimHughes - 我很乐意提供帮助。如果这对您有用,请不要忘记接受答案。
    • 我正在尝试对此添加更多问题,基本上我已经让您的代码为我工作,这很棒,但我有一组 6 个案例,现在有没有办法复制这种格式对于其余的帖子,假设我有 10 个帖子,我希望同样的格式再次发生,直到帖子用完
    猜你喜欢
    • 2020-01-04
    • 2023-04-09
    • 2011-01-05
    • 2012-05-23
    • 2014-03-09
    • 2014-02-14
    • 2014-11-29
    相关资源
    最近更新 更多