大阪のホームページ制作会社 株式会社TREVO
技術ブログ

ACF等のカスタムフィールドが空欄の場合の条件分岐と内容の表示方法

2024.12.24.

WordPress

ACF

twitter Facebook Pocket LINE はてブ

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

カスタムフィールドの値が空欄かどうかを判定し、値がない場合は非表示、ある場合は適切な内容を表示する方法について解説します。
この処理はWordPressのテンプレートファイルで頻繁に使用される基本的な構文です。

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

フィールド名:

コード例

<?php
$ctm = get_post_meta($post->ID, '○', true); // カスタムフィールドの値を取得
if (empty($ctm)): ?>
    <!-- フィールド○が空だった時に表示する内容 -->
    <p>この情報は現在利用できません。</p>
<?php endif; ?>

解説

get_post_meta():

get_post_meta($post->ID, '○', true) を使って、特定の投稿IDからカスタムフィールド の値を取得します。

第3引数を true にすると、単一の値を返します。

empty():

empty($ctm) を使用して、取得した値が空かどうかを判定します。

空欄や nullfalse、未設定のフィールドに対応します。

値がある場合と空欄の場合で異なる表示をする

フィールド名:

コード例

<?php
$ctm = get_post_meta($post->ID, '○', true); // カスタムフィールドの値を取得
if (empty($ctm)): ?>
    <!-- フィールド○が空欄だった場合 -->
    <p>この情報は現在利用できません。</p>
<?php else: ?>
    <!-- フィールド○に値がある場合 -->
    <p><?php echo esc_html($ctm); ?></p>
<?php endif; ?>

解説

if-else:

if (empty($ctm)) でフィールドが空欄の場合の処理を記述。

else でフィールドに値がある場合の処理を記述。

esc_html():

フィールドの値をそのまま出力する場合、esc_html() を使用してセキュリティ対策を行います。

悪意のあるコードが含まれていた場合のXSS攻撃を防ぎます。

実用的な応用例

フィールド値に応じたHTML要素の生成

フィールド名:

<?php
$ctm = get_post_meta($post->ID, '○', true);
if (!empty($ctm)): ?>
    <div class="custom-field">
        <p>情報:<?php echo esc_html($ctm); ?></p>
    </div>
<?php endif; ?>

フィールドが空欄でない場合にのみ特定のHTML構造を出力します。

デフォルト値の設定

フィールド名:

空欄の場合にデフォルトのテキストを表示する例です。

<?php
$ctm = get_post_meta($post->ID, '○', true);
echo !empty($ctm) ? esc_html($ctm) : 'デフォルトの情報';
?>

三項演算子を使用して、値がない場合はデフォルトテキストを出力。

複数のフィールドをチェック

フィールド名:

複数のカスタムフィールドをチェックして、いずれかに値があれば表示します。

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

if (!empty($field1) || !empty($field2)): ?>
    <p>いずれかのフィールドに情報があります。</p>
    <p>Field1: <?php echo esc_html($field1); ?></p>
    <p>Field2: <?php echo esc_html($field2); ?></p>
<?php else: ?>
    <p>どちらのフィールドも空欄です。</p>
<?php endif; ?>

注意点

フィールドが未設定の場合

get_post_meta() は未設定のフィールドに対して空文字列("")を返します。

empty() で十分に対応可能です。

セキュリティ対策

出力するフィールド値には必ず esc_html()esc_attr() を使用してエスケープ処理を行います。

動作確認

テスト環境で、フィールドが空欄と値がある場合の両方をテストして正しい挙動を確認しましょう。

大阪のホームページ制作会社TREVOでは、ホームページ制作に関する情報を掲載しています。最短2日で仮サイトを公開するサービスやSEO対策に特化したホームページ制作、オリジナルホームページデザイン、ライティング、リスティング広告、WEBマーケティングなどのサービスをご紹介しています。

板浪雅樹 のアバター

経歴: 映像制作の専門学校を卒業後、映像制作(編集・撮影)でのアシスタント、カーナビゲーション用の3DCG制作、PS2用の3DCGゲーム背景制作、16ミリフィルムのデジタル変換業務等を経てWEB制作部門のある会社に就職。株式会社TREVOでディレクション、SEO対策、CMS開発、3DCG制作、映像制作を担当

twitter Facebook Pocket LINE はてブ
WEB無料相談