0

基本的に、次の形式で投稿を出力するカスタムWordpressポストループが必要です(2つの投稿ごとにそのようにフォーマットする必要があるため、「列」divに含まれる2つの投稿は両方とも「行」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 に投稿が 1 つしかない場合です。「.row cols2」終了タグは、行に 2 つの投稿がある場合にのみ出力されるためです。誰かがそれを助ける方法について何か考えを持っているなら、大歓迎です!

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

最後に、リーのコードに基づいて正しく動作するようになりました。本当に助けていただきありがとうございます! コード:

<?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 に答える