カスタムフィールドの値が空欄かどうかを判定し、値がない場合は非表示、ある場合は適切な内容を表示する方法について解説します。
この処理は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)
を使用して、取得した値が空かどうかを判定します。
空欄や null
、false
、未設定のフィールドに対応します。
値がある場合と空欄の場合で異なる表示をする
フィールド名:○
コード例
<?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マーケティングなどのサービスをご紹介しています。