スマートカスタムフィールドで空欄だった時の条件分岐

投稿日:2024.12.25.
更新日:2025.04.12.

スマートカスタムフィールド

株式会社TREVOの月額制ホームページ制作サービス
PR

板浪 雅樹
執筆・編集 板浪 雅樹

2005年から WEB 業界一筋。500サイト超を手がける SEO・WordPress のエキスパート。「公開後こそ本番」を掲げ、データ分析とユーザー視点で成果を引き出す運用を提案。

2005年に制作会社へ入社後、プログラマーからキャリアをスタート。サーバー構築・データベース設計で培った技術を強みに、WordPress テーマ/プラグイン開発やサイト移行の難案件を多数担当してきました。
2010年以降は SEO エンジニアとしても活動領域を拡大。コンテンツ設計・内部リンク最適化・高速化チューニングにより、競合の激しいビッグキーワードで上位獲得を実現してきました。
現在は TREVO のウェブディレクターとして、要件定義から運用改善まで一気通貫でリード。AI ライティングや GA4/Looker Studio を活用したレポーティング手法を開発し、「数字で説明できるサイト運用」をポリシーにクライアントの ROI 最大化を支援しています。
趣味/強み:筋トレとランニングで日々の集中力をキープ。複雑な課題を“仕組み”で解決するのが得意。
モットー:「サイトは資産。改善を止めた瞬間から価値は目減りする」

カスタムフィールドを使った投稿やページでは、フィールドに値が入力されている場合にのみデータを表示し、空欄の場合は非表示にする処理が一般的です。また、空欄の場合にデフォルトのメッセージを表示する場合もあります。

以下では、フリーのスマートカスタムフィールド(Smart Custom Fields)を使用したコード例を紹介します。

カスタムフィールドが空欄だった時の条件分岐

カスタムフィールドが空欄かどうかを判定し、値があれば表示する基本的なコードです。

コード例

フィールド名:○

<?php if (get_post_meta($post->ID, '○', true)): ?>
    <?php $○ = post_custom('○'); // カスタムフィールドの値を取得 ?>
    <?php echo $○; ?>
<?php endif; ?>

テキストエリアで改行を反映させる

改行を含むテキストエリアの値を表示する場合、nl2br() 関数を使用して改行コードをHTMLの <br> タグに変換します。

コード例

フィールド名:○

<?php if (get_post_meta($post->ID, '○', true)): ?>
    <?php $○ = SCF::get('○'); // スマートカスタムフィールドで値を取得 ?>
    <?php echo nl2br($○); // 改行をHTMLに変換して表示 ?>
<?php endif; ?>

条件分岐を追加してデフォルトのメッセージを表示

カスタムフィールドに値がない場合に、デフォルトのメッセージを表示する例です。

コード例

フィールド名:○

<?php if (get_post_meta($post->ID, '○', true)): ?>
    <?php $○ = post_custom('○'); // カスタムフィールドの値を取得 ?>
    <?php echo $○; ?>
<?php else: ?>
    <p>入力が無い場合の情報を挿入</p>
<?php endif; ?>

応用:複数フィールドの条件分岐

複数のカスタムフィールドの値をチェックし、いずれかに値がある場合に特定の処理を行う方法です。

コード例

フィールド名:〇、△

<?php
$field1 = get_post_meta($post->ID, '〇', true);
$field2 = get_post_meta($post->ID, '△', true);

if (!empty($field1) || !empty($field2)): ?>
    <p>いずれかのフィールドに値があります。</p>
    <?php if (!empty($field1)): ?>
        <p>フィールド1: <?php echo esc_html($field1); ?></p>
    <?php endif; ?>
    <?php if (!empty($field2)): ?>
        <p>フィールド2: <?php echo esc_html($field2); ?></p>
    <?php endif; ?>
<?php else: ?>
    <p>どちらのフィールドにも値がありません。</p>
<?php endif; ?>

ポイントと注意点

get_post_meta()post_custom() の違い

get_post_meta() は標準のWordPress関数で、カスタムフィールドの値を取得します。

post_custom() は簡易的に値を取得する関数ですが、現在ではあまり使用されません。

HTMLエスケープの使用

出力する値に対して、esc_html()esc_attr() を使用してエスケープ処理を行い、セキュリティを確保します。

Smart Custom Fieldsの利用

SCF::get('フィールド名') を使用すると、Smart Custom Fieldsプラグインで設定されたカスタムフィールドの値を簡単に取得できます。

改行処理

テキストエリアに入力された値は改行がそのまま表示されないため、nl2br() を使用して改行を適切に処理します。

関連の記事

CONTACT

ホームページ制作・Web制作に関するご質問やご相談は、
下記フォームよりお問い合わせください。

無料のお見積りや初回のご相談も承っておりますので、「まだ検討中」「ちょっと話を聞いてみたい」といった段階でも大歓迎です。
現状のホームページ診断も無料で実施中です。

0120-83-8567
平日9:00~18:00まで 定休日:土 日 祝