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倍数もしくはカウント数がトータルと同じだった場合に閉じる処理にしました。