【Custom Field Suite】条件分岐の書き方を徹底的に解説

  • 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】条件分岐の書き方を徹底的に解説」を実践すれば、お客様が使いやすい設計にすることができます。

 

なお「カスタムフィールドを使った構築をしたいが、自分だと分からない…」という方は、お気軽にお問い合わせください!

SNSでもご購読できます。

コメントを残す

前の記事

次の記事