0

基本上我需要一个自定义的 Wordpress 帖子循环,它以以下格式输出帖子(每两个帖子都应该以这种方式格式化,所以两个帖子都在一个“col”div 中,都包含在“row”div 中。):

<div class="row cols2">
<div class="col left">
<a href="#"><img src="featured-image.jpg" /></a>
<h2><a href="#">Blog Post Title</a></h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
</div><!-- /.col left -->

<div class="col right">
<a href="#"><img src="featured-image.jpg" /></a>
<h2><a href="#">Blog Post Title</a></h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
</div><!-- /.col right -->
</div><!-- /.row cols2 -->

我使用以下循环或多或少地实现了这一点:

<?php $counter=1;$grids=2;global $query_string;query_posts($query_string.'&caller_get_posts=1&posts_per_page=6');if(have_posts()):while(have_posts()):the_post();if($counter==1):?>
<div class="row cols2">
<div class="col left">
<a href="<?php the_permalink()?>"><?php the_post_thumbnail('default-thumb')?></a>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt() ?>
</div><!-- /.col left -->

<?php elseif($counter==$grids):?>
<div class="col right">
<a href="<?php the_permalink()?>"><?php the_post_thumbnail('default-thumb')?></a>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt() ?>
</div><!-- /.col right -->
</div><!-- /.row cols2 -->
<?php $counter=0;endif;$counter++;endwhile;endif;?>

唯一的问题是当“.row cols2” div 中只有一个帖子时,它会搞砸,因为“.row cols2”结束标记仅在连续有两个帖子时输出。如果有人对如何提供帮助有任何想法,将不胜感激!

4

2 回答 2

0

我很高兴我不必使用您的代码,这是阅读的噩梦。我建议不要像这样把条件和循环混为一谈,它只会让阅读和调试变得更加困难。

关于您的问题,基本思想是您在每个偶数计数增量时输出容器,然后检查最后的计数器以查找您是否缺少任何要求(即表格中的表格单元格,元素的结束标记等)。

因此,您需要做的就是在最后检查它(我还重写了您的帖子输出,切勿不必要地重复相同的代码,这可能会在您稍后更改一个而不是另一个时导致您出现问题)。

<?php 
$counter=1;
$grids=2;
global $query_string;
query_posts($query_string.'&caller_get_posts=1&posts_per_page=6');

if(have_posts()):

  while(have_posts()):

    the_post();

    //-- ouput start elements
    if($counter==1): ?>
      <div class="row cols2">
      <div class="col left">
    <?php
    elseif($counter == $grids): ?>
      <div class="col right">
    <?php endif; ?>

    <?php /* Output column box content */ ?>

    <a href="<?php the_permalink()?>"><?php the_post_thumbnail('default-thumb')?></a>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <?php the_excerpt() ?>



     <?php /* always need to close the inner div */ ?>
     </div>

     <?php 
     //-- if its the second column, then end row and reset counter
    if($counter == $grids): ?>
      </div>
    <?php 
      $counter = 0;
    endif; ?>


<?php 
$counter++;
endwhile;

if($counter == 1):
  //--- output empty second column div then end the row
  ?>
  <div class="col right"></div>
  </div>
  <?php
endif; 
    ?>

<?php
/** Forgot this one */
endif;

?>
于 2012-09-04T18:42:20.917 回答
0

终于让它正常工作了,基于 Lee 的代码,非常感谢帮助!编码:

<?php $counter=1;global $query_string;query_posts($query_string.'&caller_get_posts=1&posts_per_page=6');if(have_posts()):while(have_posts()):the_post();if($counter==1):?>

<div class="row cols2">
<div class="col"><?php elseif($counter==2): ?><div class="col"><?php endif; ?>

<a href="<?php the_permalink();?>"><?php the_post_thumbnail('default-thumb')?></a>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt() ?>
</div><!-- /.col -->

<?php if($counter==2): ?></div><!-- /.row cols2 -->
<?php $counter=0;endif;$counter++;endwhile;if($counter==2):?></div><!-- /.row cols2 --><?php endif;endif; ?>
于 2012-09-05T14:34:47.220 回答