本ページはプロモーションが含まれています

【保存版】Smart Custom Fields(SCF)の出力方法まとめ|コピペOKな実務用コード集

2026年02月01日

WordPress制作の現場で欠かせないプラグイン「Smart Custom Fields(SCF)」。一度設定すれば便利ですが、出力用コードは意外と忘れがちですよね。

今回は、私が実務で何度も見返す「SCF出力コードの決定版」をまとめました。自分用の備忘録ですが、コピペしてそのまま使えるスニペットとして公開します。

1. テキスト(Text)

最も基本。記述がある時だけ出力する「if文」をセットで使うのがプロの作法です。

<?php
  $text = SCF::get('field_name');
  if ( !empty($text) ) : 
    echo esc_html($text);
  endif;
?>

2. テキストエリア(Textarea):改行を有効にする

テキストエリアで入力した「改行」をブラウザでも反映させるには nl2br() を使います。

<?php
  $textarea = SCF::get('field_textarea');
  if ( !empty($textarea) ) :
    echo nl2br(esc_html($textarea));
  endif;
?>

3. ラジオボタン・チェックボックス

チェックボックスは「配列」で取得されるため、複数の項目を表示する場合はループ処理が必要です。

ラジオボタン(単一選択)

<?php echo esc_html(SCF::get('field_radio')); ?>

チェックボックス(複数選択)

<?php
  $check_array = SCF::get('field_checkbox');
  if ( !empty($check_array) ) :
    echo '<ul class="cmn_list">';
    foreach ( $check_array as $value ) {
      echo '<li>' . esc_html($value) . '</li>';
    }
    echo '</ul>';
  endif;
?>

4. 画像(Image):src URLを出力

SCFはデフォルトで「画像ID」を返します。それを使ってURLとalt属性を取得する、最も安全な書き方です。

<?php
  $img_id = SCF::get('field_image');
  if ( !empty($img_id) ) :
    // サイズは 'full', 'large', 'medium' など
    $img_url = wp_get_attachment_image_src($img_id, 'full');
    $img_alt = get_post_meta($img_id, '_wp_attachment_image_alt', true);
?>
    <img src="<?php echo esc_url($img_url[0]); ?>" alt="<?php echo esc_attr($img_alt); ?>">
<?php endif; ?>

5. 繰り返しフィールド(Repeat Group)

SCF最大の武器。ループ内の名前(キー)は、SCF設定画面の「名前」と一致させる必要があります。

<?php
  $repeat_group = SCF::get('group_name'); // ここにグループ名を指定
  foreach ( $repeat_group as $fields ) :
    // グループ内の特定の項目に値がある場合のみ表示
    if ( !empty($fields['item_title']) ) :
?>
      <div class="custom_item">
        <h3><?php echo esc_html($fields['item_title']); ?></h3>
        <p><?php echo nl2br(esc_html($fields['item_text'])); ?></p>
      </div>
<?php
    endif;
  endforeach;
?>

開発メモ:記述がある場合だけ出し分けるコツ

クライアントワークでは、「空欄ならセクションごと非表示にする」という処理が多用されます。今回紹介した if ( !empty($var) ) をラッパー(囲い)のタグに対しても使うことで、無駄な余白や空タグが出るのを防げますよ!

これで次からのコーディングが少し楽になりそうです。もし「あの項目の書き方は?」というのがあれば、また追記していきます!