やりたいこと
カスタムフィールドの値があるときに表示させるコード、そしてカスタムフィールドの値が空の時に表示させるコード、それらを振り分けて出力します。
たとえば「画像を表示させるため、カスタムフィールドに画像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() で取得しても良いです。
単純に存在するかしないかがわかれば良いのであれば、例えばこれくらいシンプルでも良いですね。
<?php if( get_field('カスタムフィールド名') ):?>
<div class=“img-wrap”>
<img src="<?php the_field('カスタムフィールド名');?>">
</div>
<?php endif; ?>
あくまで基本的な内容の紹介でしたが、実際に使用する場合は、適宜 条件分岐や内容を変えて利用して下さい。
1 件のコメントが “【WordPress】カスタムフィールドが空の時は表示させないようにする” にあります。