ループ中に回数を数える

2月ももうすぐ終わりですね。

みなさんはちゃんと節分しましたか?バレンタインはしましたか?

新潟は春が来るのがもう少し先のようですが、みなさんのお住まいのあたりはいかがでしょうか?

さて今回はWordpressのお話です。

先日制作させていただいたサイトで、アーカイブページで3つのボックスを1並びごとにマークアップする必要があったんです。

ではループの1(+3n)回目と、3(+3n)回目にだけ処理が入るようにif分をかけばいいのかな、と。そのときのお話です。


<?php 
//ループ回数を入れる変数  
$count = 1;
//トータルの記事数
$name =  get_term_by('slug',$term,'taxonomy_name')->name ;
$count_total =  get_term_by('slug',$term,'taxonomy_name')->count ; 
?>
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php
	$flag_count = 0;
//何番目か確認
	if($count%3 == 0){
		$flag_count = 3;
	}elseif($count%3 == 1){
		$flag_count = 1;
	}elseif($count%3 == 2){
 	 	$flag_count = 2;
	 }else{
		$flag_count = 0;
	}
?>
<?php 
	if($flag_count == 1){
		echo '<div class="row">';
	}
?>
 
 コンテンツがは入ります。
 
<?php 
	if($flag_count == 3 || $count == $count_total){
		echo '</div><!-- end .row -->';
	}
?>

<?php 
	$count++;  //最後にループ回数を一つ進める 
?>
<?php endwhile; ?>
<?php endif;  ?>

骨組みはこんな感じにしました。

今回は3回1セットなので、回数を数える変数$countを用意して、3で割ったときのあまりが1なら1(+3n)回目、2なら2(+3n)回目・・・と数えていきます。(4回ごとの処理なら$count%3を$count%4へ、と適宜変更してください。)

これで3つのボックスを1並びごとにできました!似たような処理で、何回めだけにクラスを付ける、とかいろいろできますね!

 

今回はこちらを参考にさせていただきました。
WordPressで3の倍数の記事にClassをつける方法(エントリの3列表示)


追記

自分で気づきしたが、もともとのソースでは3の倍数以外で最後のdivが閉じませんね。修正して再アップしています。

トータルの記事数を取得し、3倍数もしくはカウント数がトータルと同じだった場合に閉じる処理にしました。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です