WordPressのwhile文を強制的に1回で終わらせる方法

wordpress

最近よくお世話になっているAdvanced Custom Fieldsの有料アドオン「Repeater Field」。ひな形を作ることで、そのひな形を繰り返し使えるカスタムフィールドで、何度も追加できるので、例えば企業サイトでよくあるご質問などを設置するとき、「質問」と「回答」のひな形を繰り返し追加していくことが出来ます。
他にも投稿内のレイアウトを自由にコントロールできる「Flexible Content Field」はオススメです(ちなみにこちらも有料アドオンです)

さて、それで最近あった事例なんですが、この「Repeater Field」は、

<?php while(has_sub_field('フィールド名')): ?>

と書くんですけど、
今回、このフィールド内にさらにセレクトでカテゴリを作って、カテゴリごとにカスタムフィールドを表示させていたんですけど、それぞれをカテゴリがなかったら「カテゴリ名(タイトル)」を非表示にしたいとの要望がありました。

ただ問題なのが、この「Repeater Field」はただ繰り返し出力(while)することしかできず、「Repeater Field」内のカテゴリを細かく判別することまでできません。

唯一の方法として、

<?php
	$cate = get_sub_field('カテゴリのフィールド');                        
	if($cate == 'カテゴリ名'):
?>
// 繰り返し内容
<?php endif; ?>

っていう風に必要なカテゴリのみを表示させるしかない。

ただこれだとカテゴリ名を判別して、そのカテゴリ名を一回しか表示させないことなんてできない。
Repeater Fieldはwhile内にしか書けないから(笑)

なので、あまりいい方法ではないのは重々承知の上だが、「カテゴリ名」と「中のフィールド」を別々のwhileで表示させることにした。

で、本題。
カテゴリ名は一回しか表示させる必要がないから強制的にwhileを1回しか行わない方法を書いてみました。

<?php $x = 1; while(has_sub_field('フィールド名')): ?>
	<?php
		$cate = get_sub_field('カテゴリのフィールド');
		if($cate == 'カテゴリ名'):
	?>
		<?php
			if($x == 1) { 
			echo '<p>カテゴリ名</p>'; 
		} ?>
		<?php $x++; ?>
	<?php endif; ?>
<?php endwhile; ?>

whileは繰り返しに使うもので、それを強制的に1回しか繰り返さないなんて、まったく意味不明なんですけど、もしwhileを1回で終わらせたい場合はお試しください。