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をうまくつかうと、条件分岐で要素をからにできます。いろいろ応用できます。
参考になれば幸いです。