【保存版】Smart Custom Fields(SCF)の出力方法まとめ|コピペOKな実務用コード集
公開日
更新日
WordPress制作の現場で欠かせない国産のカスタムフィールドプラグイン「Smart Custom Fields(SCF)」。動作が軽く、一度設定すれば非常に便利ですが、出力用コードの書き方は意外と忘れがちですよね。
今回は、私が実務で何度も見返している「SCF出力コードの決定版」をまとめました。自分用の備忘録を兼ねたスニペット集ですので、ぜひコピペして活用してください。
目次
1. テキスト(Text)
最も基本となるフィールドです。値がない場合に空のタグが出力されないよう、if文による条件分岐をセットで使うのが「プロの作法」です。
まずはSmart Custom Fieldsを有効化し、新規作成からフィールドを構築しましょう。今回は「固定ページ」での使用を想定し、表示条件で「固定ページ」を有効にした設定を例に解説します。
- タイプ:テキスト
- ラベル:テキスト(Text)
- 名前:field_name
ここで重要になるのが「名前」の項目です。これはPHP側で値を呼び出す際のIDとなるため、後から見ても役割が分かりやすい英単語(スネークケース推奨)で命名することをお勧めします。

設定が完了したら、固定ページの編集画面へ移動してフィールドが表示されているか確認しましょう。エディタの下部にフィールドが表示されていれば準備完了です。任意のテキストを入力してページを更新しましょう。

テンプレートファイル(page.phpなど)の出力したい箇所に、以下のコードを記述します。
<?php
$text = SCF::get('field_name');
if ( !empty($text) ) :
echo esc_html($text);
endif;
?>
2. テキストエリア(Textarea):改行を有効にする
テキストエリアで入力した「改行」を反映させるには、PHPの 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')); ?>
チェックボックス(複数選択)
チェックボックスは複数の値が「配列」で取得されるため、foreachを使ってループ処理を行います。
<?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」を返します。このIDからURLとalt属性を取得する、保守性の高い書き方です。
<?php
$img_id = SCF::get('field_image');
if ( !empty($img_id) ) :
$img_data = wp_get_attachment_image_src($img_id, 'full');
$img_url = $img_data[0];
$img_alt = get_post_meta($img_id, '_wp_attachment_image_alt', true);
?>
<img src="<?php echo esc_url($img_url); ?>" alt="<?php echo esc_attr($img_alt); ?>">
<?php endif; ?>
5. 繰り返しフィールド(Repeat Group)
各子フィールドの「名前(キー)」を呼び出してループ処理を行います。
<?php
$repeat_group = SCF::get('group_name');
if ( !empty($repeat_group) ) :
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;
endif;
?>
💡 開発メモ:デザインを崩さないためのコツ
クライアントワークでは、「入力がある時だけセクションごと表示する」という処理が非常に重要です。今回紹介した if ( !empty($var) ) をセクションを囲むタグの外側に配置することで、不要な余白や空タグの発生を防ぐことができます。
これらのスニペットをストックしておけば、次からのコーディング効率がグッと上がるはずです。他にも「この項目の書き方は?」といったリクエストがあれば、随時追記していきます!
