Advanced Custom FieldsとPHPの条件分岐をつかって値がないときは表示させない。

HOW TO

名古屋でホームページ・WEB制作をしているダブダブダブのデザイナー稲葉です。
Advanced Custom Fieldsの条件分岐の記事はたくさんありますが、いくつもの要素が重なった時の記事はなっかたので、自分用のメモとしても、残しておきます。

例えば投稿ページ各SNSを想定したとき

ひとつの項目なら値がないときは、要素をなくす記事はたくさんあります。

よくあるのはこんな感じ

<?php $ccc = get_post_meta($post->ID, 'カスタムフィールド名', true);?>
<?php if(empty($ccc)):?>
<!-- 代替する内容、代替する内容が不要ならここを空に -->
<?php else:?>
<div class="under">
<?php echo post_custom('カスタムフィールド名');?>
</div>
<?php endif;?>

これだと値がないとき、空になります。

ですが、すべての要素が無いときはこんな感じになってします。

こうならないために条件分岐を仕様します。

 

<?php
$twitter = get_post_meta($post->ID, 'twitter', true);
$facebook = get_post_meta($post->ID, 'facebook', true);
$youtube = get_post_meta($post->ID, 'youtube', true);
$instagram = get_post_meta($post->ID, 'instagram', true);
/* social if ここから */
if(!empty($twitter) || !empty($facebook) || !empty($youtube) || !empty($instagram)   ) {
?>

<div class="SocialAreaIn" id="SocialFoolow">
<b>SNS</b>
<ul>

<?php if(!empty($twitter)):?>
<li><a target="_blank" href="<?php echo post_custom('twitter');?>">twitter</a></li>
<?php endif;?>

<?php if(!empty($facebook)):?>
<li><a target="_blank" href="<?php echo post_custom('facebook');?>">facebook</a></li>
<?php endif;?>

<?php if(!empty($youtube)):?>
<li><a target="_blank" href="<?php echo post_custom('youtube');?>">youtube</a></li>
<?php endif;?>

<?php if(!empty($instagram)):?>
<li><a target="_blank" href="<?php echo post_custom('instagram');?>">Instagram</a></li>
<?php endif;?>

</ul>
</div>
<?php } /** social if ここまで */ ?>

まとめ

もっとスマートな書き方はあると思いますが、

!emptyをうまくつかうと、条件分岐で要素をからにできます。いろいろ応用できます。
参考になれば幸いです。

この記事を書いた人

稲葉 恭平

稲葉 恭平

愛知県刈谷市・名古屋でホームページ制作をしているダブダブダブのwebデザイナーです。 デザインしたりコーディングしたりマーケティング・ コンテンツSEOだったり、wordpressの組み込みをしています。 記事が参考になったらシェアして頂けると幸いです。