【Smart Custom Fields】条件分岐の書き方6選

  • Smart Custom Fieldsの条件分岐は、どのようにコードを書くのだろう?
  • 『テキスト』や『チェック』、『繰り返し』などを使用した時の、条件分岐の書き方を知りたいな!

このような疑問にお答えします!

『テキスト』、『テキストエリア』、『画像』の条件分岐

『テキスト』、『テキストエリア』、『画像』を使用した時の条件分岐は下記のとおり。

<!-- テキスト -->
<?php $field = SCF::get('名前'); ?>
<?php if($field): ?>
  <!-- 入力がある場合 -->
  <p><?php echo $field; ?></p>
  <!-- / 入力がある場合 -->
<?php else: ?>
  <!-- 入力がない場合 -->
  <p>-</p>
  <!-- / 入力がない場合 -->
<?php endif; ?>


<!-- テキストエリア -->
<?php $field = SCF::get('名前'); ?>
<?php if($field): ?>
  <!-- 入力がある場合 -->
  <p><?php echo nl2br($field); ?></p>
  <!-- / 入力がある場合 -->
<?php else: ?>
  <!-- 入力がない場合 -->
  <p>-</p>
  <!-- / 入力がない場合 -->
<?php endif; ?>


<!-- 画像 -->
<?php $field = SCF::get('名前'); ?>
<?php if($field): ?>
  <img src="<?php echo wp_get_attachment_url($field); ?>" alt="">
<?php else: ?>
  <img src="<?php echo esc_url(get_theme_file_uri('img/dummy.jpg')); ?>" alt="">
<?php endif; ?>

『チェック』の条件分岐

『チェック』を使用した時の条件分岐は下記のとおり。

<?php $fields = SCF::get('名前'); ?>
<?php if($fields): ?>
  <!-- 入力がある場合 -->
  <?php foreach($fields as $field): ?>
    <p><?php echo $field; ?></p>
  <?php endforeach; ?>
  <!-- / 入力がある場合 -->
<?php else: ?>
  <!-- 入力がない場合 -->
  <p>-</p>
  <!-- / 入力がない場合 -->
<?php endif; ?>

『ラジオボタン』と『選択』の条件分岐

『ラジオボタン』と『選択』を使用した時の条件分岐は下記のとおり。

<?php $key = SCF::get('名前'); ?>
<?php if($key == '1つ目キー'): ?>
  <!-- 1つ目の値を選択した場合に表示したい内容 -->
<?php elseif($key == '2つ目キー'): ?>
  <!-- 2つ目の値を選択した場合に表示したい内容 -->
<?php elseif($key == '3つ目キー'): ?>
  <!-- 3つ目の値を選択した場合に表示したい内容 -->
<?php else: ?>
  <!-- どの値も選択していない場合に表示したい内容 -->
<?php endif; ?>

 

このままですとイメージしずらいですので、『ラジオボタン』のサンプルを用意しました。

Smart Custom Fieldsの設定画面

『選択肢』の箇所ですが、今回は『キー』と『値』を分ける必要があるため、上記のように設定しております。

固定ページ(投稿ページ)の編集画面

phpの設定画面

<?php $key = SCF::get('radio'); ?>
<?php if($key == 'a'): ?>
  <p>バナナを選択しました。</p>
<?php elseif($key == 'b'): ?>
  <p>りんごを選択しました。</p>
<?php elseif($key == 'c'): ?>
  <p>なしを選択しました。</p>
<?php else: ?>
  <p>何も選択していません。</p>
<?php endif; ?>

『真偽値』の条件分岐

『真偽値』を使用した時の条件分岐は下記のとおり。

<?php $fields = SCF::get('名前'); ?>
<?php if($fields): ?>
  <!-- はい(true)を選択した場合に表示したい内容 -->
<?php else: ?>
  <!-- いいえ(false)を選択した場合に表示したい内容 -->
<?php endif; ?>

『繰り返し』内の『サブフィールド』の条件分岐

<?php $fields = SCF::get('グループ名'); ?>
<!-- 繰り返し -->
<?php foreach($fields as $field): ?>
  <?php if($field['名前']): ?>
    <!-- 入力がある場合 -->
    <img src="<?php echo wp_get_attachment_url($field['名前']); ?>" alt="">
    <!-- / 入力がある場合 -->
  <?php else: ?>
    <!-- 入力がない場合 -->
    <img src="<?php echo esc_url(get_theme_file_uri('img/dummy.jpg')); ?>" alt="">
    <!-- / 入力がない場合 -->
  <?php endif; ?>
<?php endforeach; ?>
<!-- / 繰り返し -->

『繰り返し』の条件分岐

最後は、『繰り返し』の条件分岐です。

つまり、『繰り返し』内の『サブフィールド』が入力されているかどうかで、『繰り返し』のブロック本体を表示するかどうかの条件分岐です。

『繰り返し』内の『サブフィールド』が1つの場合は下記のとおり。

<?php $fields = SCF::get('グループ名'); ?>
<?php if($fields[0]['名前']): ?>
  <!-- 繰り返し -->
  <?php foreach($fields as $field): ?>
    <?php if($field['名前']): ?>
      <!-- 入力がある場合 -->
      <img src="<?php echo wp_get_attachment_url($field['名前']); ?>" alt="">
      <!-- / 入力がある場合 -->
    <?php else: ?>
      <!-- 入力がない場合 -->
      <img src="<?php echo esc_url(get_theme_file_uri('img/dummy.jpg')); ?>" alt="">
      <!-- / 入力がない場合 -->
    <?php endif; ?>
  <?php endforeach; ?>
  <!-- / 繰り返し -->
<?php else: ?>
  <p>『繰り返し』の『サブフィールド』が入力されていません。</p>
<?php endif; ?>

 

解説しますね!

 

<?php if($fields[0]['名前']): ?>

こちらは、『繰り返し』内の『サブフィールド』の1つ目の箇所が入力されているかどうかを確認しております。

 

イメージ画像の赤枠の箇所です。

 

現状の仕様ですと、他に良さそうな方法がないため、このような書き方になっております。

『繰り返し』内の『サブフィールド』が複数の場合は下記のとおり。

<?php $fields = SCF::get('グループ名'); ?>
<?php if($fields[0]['名前1'] || $fields[0]['名前2'] || $fields[0]['名前3']): ?>
  <!-- 繰り返し -->
  <?php foreach($fields as $field): ?>

    <?php if($field['名前1']): ?>
      <!-- 入力がある場合 -->
      <img src="<?php echo wp_get_attachment_url($field['名前1']); ?>" alt="">
      <!-- / 入力がある場合 -->
    <?php else: ?>
      <!-- 入力がない場合 -->
      <img src="<?php echo esc_url(get_theme_file_uri('img/dummy.jpg')); ?>" alt="">
      <!-- / 入力がない場合 -->
    <?php endif; ?>

    <!-- 『else:』は省略 -->
    <?php if($field['名前2']): ?>
      <h3><?php echo $field['名前2']; ?></h3>
    <?php endif; ?>

    <!-- 『else:』は省略 -->
    <?php if($field['名前3']): ?>
      <p><?php echo $field['名前3']; ?></p>
    <?php endif; ?>

  <?php endforeach; ?>
  <!-- / 繰り返し -->
<?php else: ?>
  <p>『繰り返し』の『サブフィールド』が入力されていません。</p>
<?php endif; ?>

 

『繰り返し』内の『サブフィールド』が複数ある場合は、シンプルに論理演算子(||)を使って記述しております。

SNSでもご購読できます。

コメントを残す

前の記事

次の記事