- Custom Field Suiteの条件分岐は、どのようにコードを書くのだろう?
- 「単一フィールド」や「チェックボックス」、「ループ」を使用した時の、条件分岐の書き方を知りたいな!
このような疑問にお答えします!
<目次>
単一フィールド(単一行テキスト、テキストエリア、リッチエデュタ等)の条件分岐
「単一行テキスト」、「テキストエリア」、「リッチエデュタ」などを使用した時の条件分岐は下記のとおり。
<?php $field = CFS()->get('フィールドの名前'); ?>
<?php if($field): ?>
<!-- 入力がある場合 -->
<p><?php echo $field; ?></p>
<!-- / 入力がある場合 -->
<?php else: ?>
<!-- 入力がない場合 -->
<p>-</p>
<!-- / 入力がない場合 -->
<?php endif; ?>
入力がない場合(else:)がいらない場合の書き方は下記のとおり。
<?php $field = CFS()->get('フィールドの名前'); ?>
<?php if($field): ?>
<!-- 入力がある場合 -->
<p><?php echo $field; ?></p>
<!-- / 入力がある場合 -->
<?php endif; ?>
デフォルトのカスタムフィールドでも使用できる『get_post_meta』を使用した条件分岐の書き方は下記のとおり。
<?php if(get_post_meta($post->ID, 'フィールドの名前', true)): ?>
<!-- 入力がある場合 -->
<p><?php echo CFS()->get('フィールドの名前'); ?></p>
<!-- / 入力がある場合 -->
<?php else: ?>
<!-- 入力がない場合 -->
<p>-</p>
<!-- / 入力がない場合 -->
<?php endif; ?>
チェックボックス(真/偽(簡易チェックボックス))の条件分岐
チェックボックスの場合は、単一フィールド(単一行テキスト、テキストエリア、リッチエデュタ等)を使用した時のコードと全く同じです。
<?php $field = CFS()->get('フィールドの名前'); ?>
<?php if($field): ?>
<!-- チェックボックスにチェックが入っている場合 -->
<p><?php echo $field; ?></p>
<!-- / チェックボックスにチェックが入っている場合 -->
<?php else: ?>
<!-- チェックボックスにチェックが入っていない場合 -->
<p>-</p>
<!-- / チェックボックスにチェックが入っていない場合 -->
<?php endif; ?>
ループの条件分岐
ループを使用した場合の条件分岐の書き方は下記のとおり。
<?php $fields = CFS()->get('フィールドタイプ(ループ)の名前'); ?>
<!-- 入力がある場合 -->
<?php if(is_array($fields)): ?>
<!-- 繰り返し -->
<?php foreach($fields as $field): ?>
<p><?php echo $field['フィールドの名前']; ?></p>
<?php endforeach; ?>
<!-- / 繰り返し -->
<!-- / 入力がある場合 -->
<?php else: ?>
<!-- 入力がない場合 -->
<p>-</p>
<!-- / 入力がない場合 -->
<?php endif; ?>
リスト(ulやol)タグを使用かつ、『else:』を使用した場合の条件分岐の書き方は下記のとおり。
<ul>
<?php $fields = CFS()->get('フィールドタイプ(ループ)の名前'); ?>
<!-- 入力がある場合 -->
<?php if(is_array($fields)): ?>
<!-- 繰り返し -->
<?php foreach($fields as $field): ?>
<li><?php echo $field['フィールドの名前']; ?></li>
<?php endforeach; ?>
<!-- / 繰り返し -->
<!-- / 入力がある場合 -->
<?php else: ?>
<!-- 入力がない場合 -->
<li>-</li>
<!-- / 入力がない場合 -->
<?php endif; ?>
</ul>
リスト(ulやol)タグを使用かつ、『else:』を使用しない場合の条件分岐の書き方は下記のとおり。
<?php $fields = CFS()->get('フィールドタイプ(ループ)の名前'); ?>
<!-- 入力がある場合 -->
<?php if(is_array($fields)): ?>
<ul>
<!-- 繰り返し -->
<?php foreach($fields as $field): ?>
<li><?php echo $field['フィールドの名前']; ?></li>
<?php endforeach; ?>
<!-- / 繰り返し -->
</ul>
<?php endif; ?>
<!-- / 入力がある場合 -->
ループの中のループ(子ループ)を使用かつ、『else:』を使用した場合の条件分岐の場合は下記のとおり。
<?php $fields = CFS()->get('フィールドタイプ(親ループ)の名前'); ?>
<!-- 親ループ内のフィールドの入力がある場合 -->
<?php if(is_array($fields)): ?>
<!-- 繰り返し -->
<?php foreach($fields as $field): ?>
<p><?php echo $field['フィールド(親ループ内)の名前']; ?></p>
<?php $fields_child = $field['フィールドタイプ(子ループ)の名前']; ?>
<!-- 子ループ内のフィールドの入力がある場合 -->
<?php if(is_array($fields_child)): ?>
<!-- 繰り返し -->
<?php foreach($fields_child as $field_child): ?>
<p><?php echo $field_child['フィールド(子ループ内)の名前']; ?></p>
<?php endforeach; ?>
<!-- / 繰り返し -->
<!-- / 子ループ内のフィールドの入力がある場合 -->
<?php else: ?>
<!-- 子ループ内のフィールドの入力がない場合 -->
<p>-</p>
<!-- / 子ループ内のフィールドの入力がない場合 -->
<?php endif; ?>
<?php endforeach; ?>
<!-- / 繰り返し -->
<!-- / 親ループ内のフィールドの入力がある場合 -->
<?php else: ?>
<!-- 親ループ内のフィールドの入力がない場合 -->
<p>-</p>
<!-- / 親ループ内のフィールドの入力がない場合 -->
<?php endif; ?>
慣れたら上記の内容がスッと理解できますが、初見ですと頭が痛くなりそうですね。
ループの中のループ(子ループ)を使用かつ、『else:』を使用しない場合の条件分岐の場合は下記のとおり。
<?php $fields = CFS()->get('フィールドタイプ(親ループ)の名前'); ?>
<!-- 親ループ内のフィールドの入力がある場合 -->
<?php if(is_array($fields)): ?>
<!-- 繰り返し -->
<?php foreach($fields as $field): ?>
<p><?php echo $field['フィールド(親ループ内)の名前']; ?></p>
<?php $fields_child = $field['フィールドタイプ(子ループ)の名前']; ?>
<!-- 子ループ内のフィールドの入力がある場合 -->
<?php if(is_array($fields_child)): ?>
<!-- 繰り返し -->
<?php foreach($fields_child as $field_child): ?>
<p><?php echo $field_child['フィールド(子ループ内)の名前']; ?></p>
<?php endforeach; ?>
<!-- / 繰り返し -->
<?php endif; ?>
<?php endforeach; ?>
<!-- / 繰り返し -->
<!-- / 親ループ内のフィールドの入力がある場合 -->
<?php endif; ?>
ループの中での条件分岐
最後は、ループの中での条件分岐です。
つまり、ループの中にある『フィールド』が入力されているかどうかの条件分岐です。
ループの中での条件分岐は下記のとおり。
<?php $fields = CFS()->get('フィールドタイプ(ループ)の名前'); ?>
<!-- 入力がある場合 -->
<?php if(is_array($fields)): ?>
<!-- 繰り返し -->
<?php foreach($fields as $field): ?>
<!-- フィールド1の入力がある場合 -->
<?php if($field['フィールド1の名前']): ?>
<p><?php echo $field['フィールド1の名前']; ?></p>
<?php endif; ?>
<!-- / フィールド1の入力がある場合 -->
<!-- フィールド2の入力がある場合 -->
<?php if($field['フィールド2の名前']): ?>
<div>
<img src="<?php echo $field['フィールド2の名前']; ?>" alt="">
</div>
<?php endif; ?>
<!-- / フィールド2の入力がある場合 -->
<?php endforeach; ?>
<!-- / 繰り返し -->
<!-- / 入力がある場合 -->
<?php endif; ?>
Custom Field Suiteを理解して、お客様が使いやすい設計にしよう!
ご紹介した「【Custom Field Suite】条件分岐の書き方を徹底的に解説」を実践すれば、お客様が使いやすい設計にすることができます。
なお「カスタムフィールドを使った構築をしたいが、自分だと分からない…」という方は、お気軽にお問い合わせください!