カスタムフィールドを使った投稿やページでは、フィールドに値が入力されている場合にのみデータを表示し、空欄の場合は非表示にする処理が一般的です。また、空欄の場合にデフォルトのメッセージを表示する場合もあります。
以下では、フリーのスマートカスタムフィールド(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()
を使用して改行を適切に処理します。
大阪のホームページ制作会社TREVOでは、ホームページ制作に関する情報を掲載しています。最短2日で仮サイトを公開するサービスやSEO対策に特化したホームページ制作、オリジナルホームページデザイン、ライティング、リスティング広告、WEBマーケティングなどのサービスをご紹介しています。