やりたいこと

・カスタムフィールドに入力があるときに表示させるコード
・カスタムフィールドが空の時に表示させるコード

この2つのケースに対して条件分岐の処理を行い、適切なコードを出力したい。

たとえば「画像を表示させるため、カスタムフィールドに画像URLを取得する」こういったコードがあったとします。

<div class="img-wrap">
    <img src="カスタムフィールドの値">
</div>

何もしないと、画像URLがない場合(空欄の場合)、この様な意味のないコードが残ってしまいます。

<div class="img-wrap">
    <img src="">
</div>

カスタムフィールドの値の有無で表示を切り替える方法

基本形

<?php $value = get_post_meta($post->ID, 'カスタムフィールド名', true);?>
<?php if(empty($value)):?>
    <!-- ★ここは空欄だった場合に表示されます(空でOK)。 -->
<?php else:?>
    <!-- ●値が有る場合に表示されます。 -->
    <div class="img-wrap">
        <img src="<?php echo post_custom('カスタムフィールド名');?>">
    </div>
<?php endif;?>

$value の値が空の場合(emptyの場合) 、★部分を返します。
それ以外(値が空じゃない場合)は、●部分を返します。

省略形

空欄部分の <?php 〜 ?> は省略できるので、こういった風に書くこともできますね。

<?php $value = get_post_meta($post->ID, 'カスタムフィールド名', true); if(empty($value)):else:?>
    <!--●値が有る場合に表示されます。-->
    <div class="img-wrap">
        <img src="<?php echo post_custom('カスタムフィールド名');?>">
    </div>
<?php endif;?>

ACFの場合

Advanced Custom Fields(ACF)プラグインを使っている場合、WordPressの関数である get_post_meta() ではなく、ACFの関数である get_field()で取得the_field()で出力 しても良いです。

単純に存在するかしないかがわかれば良いのであれば、例えばこれくらいシンプルでも良いですね。

<?php if( get_field('カスタムフィールド名') ):?>
    <div class="img-wrap">
        <img src="<?php the_field('カスタムフィールド名');?>">
    </div>
<?php endif; ?>

分岐させる場合はこのように。

<?php if( get_field('カスタムフィールド名') ):?>
    <div class="img-wrap">
        <img src="<?php the_field('カスタムフィールド名');?>">
    </div>
<?php else:?>
    <p>画像がありません</p>
<?php endif; ?>

補足:ACF PRO で optionページ を使用している場合

optionページを使用する場合は、option パラメーターを追加してあげます。

<?php if( get_field('カスタムフィールド名','option') ):?>
    <div class="img-wrap">
        <img src="<?php the_field('カスタムフィールド名','option');?>">
    </div>
<?php endif; ?>

【参考】Get values from an options page | ACF PRO
https://www.advancedcustomfields.com/resources/get-values-from-an-options-page/

あくまで基本的な内容の紹介でしたが、実際に使用する場合は、適宜 条件分岐や内容を変えて利用して下さい。

【WordPress】よく使う条件分岐

トップページの時・特定のアーカイブのとき・特定の条件のとき…など、よく使うWordPressの条件分岐をカテゴリごとにまとめました。

1 件のコメントが “【WordPress】カスタムフィールドが空の時は表示させないようにする” にあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です