【WordPress】カスタムフィールドの入力有無に応じて表示を切り替える方法

【WordPress】カスタムフィールドの入力有無で表示を動的に変更する方法 WordPress

WordPressでは、カスタムフィールドを使って投稿や固定ページに任意の情報を追加できます。例えば、商品情報やイベントの詳細など、カスタムフィールドに入力があるかどうかで表示内容を切り替えることで、柔軟なコンテンツ設計が可能になります。

この記事では、カスタムフィールドの入力有無に応じて表示を動的に切り替える方法を、実用例を交えながらわかりやすく解説します。

カスタムフィールドの値を取得する

まず、WordPressの関数 get_post_meta() を使用して、カスタムフィールドの値を取得します。

<?php
$custom_field_value = get_post_meta(get_the_ID(), 'custom_field_key', true);
?>

ここで 'custom_field_key' は実際に使用しているカスタムフィールドのキー名に置き換えてください。

値の有無で表示を切り替える

取得した値が空でない場合にだけ表示を行いたい場合は、以下のように記述します。

<?php
$custom_field_value = get_post_meta(get_the_ID(), 'custom_field_key', true);

if (!empty($custom_field_value)) {
    echo '<div class="custom-field">';
    echo '<h3>カスタムフィールドのタイトル</h3>';
    echo '<p>' . esc_html($custom_field_value) . '</p>';
    echo '</div>';
}
?>

empty() 関数を使うことで、値が空(null、空文字、0など)であるかを判定できます。esc_html() を用いて出力することで、HTMLの不正な挿入を防ぎ、セキュリティを確保できます。

値が未入力の場合に代替テキストを表示する

値が入力されていないときに「未入力」や「お問い合わせください」などのテキストを表示するには、三項演算子が便利です。

<?php
$custom_field_value = get_post_meta(get_the_ID(), 'custom_field_key', true);
$display_text = !empty($custom_field_value) ? esc_html($custom_field_value) : '未入力';
echo '<p>' . $display_text . '</p>';
?>

実用例:価格が未入力なら「お問い合わせください」

商品ページなどで価格が入力されていない場合に代替文を表示する例です。

<?php
$price = get_post_meta(get_the_ID(), 'price', true);
$display_price = !empty($price) ? esc_html($price) . '円' : 'お問い合わせください';
echo '<p>価格: ' . $display_price . '</p>';
?>

実用例:イベント開催日が未定の場合の表示

イベント情報の開催日時がまだ未確定のときに「未定」と表示する例です。

<?php
$event_date = get_post_meta(get_the_ID(), 'event_date', true);
$display_date = !empty($event_date) ? esc_html($event_date) : '未定';
echo '<p>開催日時: ' . $display_date . '</p>';
?>

まとめ

カスタムフィールドの入力有無に応じて表示を切り替えることで、無駄な空白やエラー表示を避け、ユーザーにとってわかりやすいコンテンツを提供できます。三項演算子や empty() の活用により、柔軟な出力が可能になりますので、サイトの見栄えや利便性向上にぜひ活用してみてください。