CONTENTS

ワードプレスの小ネタ集
WEB制作

おすすめPICK UPサービス!

ワードプレス
公開日:2024.0218

【wordpress】ループの件数を判別して条件分岐

wordpressのループ中に「N件で改行・閉じタグを行いたい」というのは良くありますね。

こちらの考えかたはwordpressの機能で分岐、ではなく「PHPで件数を判別して分岐」と考えれば非常に簡単です。

例:PHPで判別して3件ごとにタグを閉じる。

例えば下記を

<ul>
	
	<li>1件目</li>
	<li>2件目</li>
	<li>3件目</li>
	<li>4件目</li>
	<li>5件目</li>
	<li>6件目</li>
	
</ul>

wordpressのループ内で分割したい場合ですが、
<li></li>が1記事と例えて進めます。

<?php if (have_posts()) : ?>						
<ul>
	<?php while (have_posts()) : the_post(); ?>
	<li>1件目</li>
	<li>2件目</li>
	<li>3件目</li>
	<li>4件目</li>
	<li>5件目</li>
	<li>6件目</li>
	<?php endwhile; ?>
</ul>
<?php endif; ?>	

こんなものでしょうか。

これを分岐します。
必要なのはループの回数ですので、PHPの代名詞ともいえる$iを使用しましょう。

<?php if (have_posts()) : ?>						
<ul>
	<?php $i = 1; ?>
	<?php while (have_posts()) : the_post(); ?>
<?php if($i % 3 == 0){ ?> //$iを3で割った余りで判別
</ul>
<ul>
<?php };?>
	<li>1件目</li>
	<li>2件目</li>
	<li>3件目</li>
	<li>4件目</li>
	<li>5件目</li>
	<li>6件目</li>
	<?php $i++; ?>
	<?php endwhile; ?>
</ul>
<?php endif; ?>	

こんなものですね。

3件ごとにタグを閉じております。
そんなに難しいことでは無いので知識の一つとして入れておくと「自分自身の引き出し」が増えてよいと思います。

【応用編】ついでのACFでのループでの分岐【Advanced Custom Fields】

ACFには「繰り返しフィールド」というものがあります。
これに対してもまったく同じように対応できます。

<?php if(have_rows('tab1')): ?>				
<ul>
	<?php $i = 1; ?>
	<?php while(have_rows('tab1')): the_row(); ?>
<?php if($i % 3 == 0){ ?> //$iを3で割った余りで判別
</ul>
<ul>
<?php };?>
	<li>1件目</li>
	<li>2件目</li>
	<li>3件目</li>
	<li>4件目</li>
	<li>5件目</li>
	<li>6件目</li>
	<?php $i++; ?>
	<?php endwhile; ?>
</ul>
<?php endif; ?>	

これで問題ありません。
最後にお伝えしておきたいです。

今回のまとめ

最初にPHPでの分岐で進めた理由は、wordpressそのものの機能に頼らず、
「wordpressを作成している根幹のPHPでの処理」を心がけていただければと思ったからです。

wordpressは高機能なものですが、その機能に頼りすぎると壁や不明点にぶつかった時に思考の幅が大変狭まってしまいます。

便利なものですが、あくまで動きは「PHP」で行われておりますので、何か困りごとはPHPの対応方法と考えていただければと思います。