2月ももうすぐ終わりですね。
みなさんはちゃんと節分しましたか?バレンタインはしましたか?
新潟は春が来るのがもう少し先のようですが、みなさんのお住まいのあたりはいかがでしょうか?
さて今回はWordpressのお話です。
先日制作させていただいたサイトで、アーカイブページで3つのボックスを1並びごとにマークアップする必要があったんです。
ではループの1(+3n)回目と、3(+3n)回目にだけ処理が入るようにif分をかけばいいのかな、と。そのときのお話です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?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倍数もしくはカウント数がトータルと同じだった場合に閉じる処理にしました。