ブログ

Smart Custom Fields 繰り返し(グループ)機能の出力を foreach 文の中で if 条件分岐を使う

     

最近使っているSmart Custom Fields(スマートカスタムフィールド)にてforeach 文の中で if文の条件分岐を使った際にハマってしまい、最終的には同じような状態に陥っている方のteratailに助けていただきました。

私のほうでも、もう少し初心者の方にもわかりやすく、且つ自分用の備忘録として残しておきたいと思います。

助けていただいたteratail↓の質問文です。ネット上ではうまく情報が探せなかったのか、Smart Custom Fieldsを使った同じような例はあまり出てきませんでした。

WordPress Smart Custom Fields 繰り返しグループ内でのコードについて
Wordpressのカスタムフィールドプラグインである、「Smart Custom Fields」で繰り返しグループを使用した際にサブフィールドが未入力のときに、サブフィールドを非表示にしたいのです。

グループ機能を使用しない場合であれば、単純にフィールドが空だったときのIF分岐で実現が可能なのですが、グループ内のコードだとそのままでは機能しません。

https://teratail.com/questions/139075

やりたかった内容

  • 表示したい項目:テキストフィールド ※チェックボックスの場合はまた記述内容が異なります。
  • 表示するページ:カスタム投稿のsingleページ
  • Smart Custom Fieldsの繰り返し機能(グループ)を使う。foreach文を使用。
  • カスタムフィールドのうち1つの項目が入力されている場合と入力されていない場合で表示を変えたい。

以下で動作します。

 <?php $グループ名 = SCF::get( 'グループ名' ); ?>
  <?php foreach ($グループ名 as $fields ) { ?>
    <?php if($fields['カスタムフィールド名']):?>
      <p>入力されている場合、表示したい内容をここに表示<br>
    カスタムフィールドを表示させたいなら以下のタグを記載</p>	
      <p><?php echo $fields['カスタムフィールド名'] ?></p>
    <!--↓未入力の場合、非表示ならここから削除-->
    <?php else: ?>
      <p>未入力の場合、表示する内容</p>
    <!--↑未入力の場合、非表示ならここまで削除-->
    <?php endif;?>
  <?php } ?>

設定する項目は以下の3つのみ。

  • グループ名
  • カスタムフィールド名
  • $fields

各項目について1つずつ説明します。

「グループ名」

この項目はSmart Custom Fieldsの管理画面で「グループ名」と書かれた右側に入力したデータをコピペしてください。

*今回は視覚的にわかりやすくするため、日本語にしています。

「カスタムフィールド名」

この項目はSmart Custom Fieldsの管理画面で「名前」の項目のデータをコピペしてください。

*今回は視覚的にわかりやすくするため、日本語にしています。

$fields

連想配列の値に該当します。
こちらは管理画面のどの項目とも合わせる必要はありません。自由な名称でOKなので、Smart Custom Fieldsを使っている方が多い「$fields」で設定しています。慣れていない方はそのまま変更せず使ってOKです。