【PHP】ワードプレスで条件分岐を使って画像がない場合には表示しないようにする

UPDATE:2013年11月21日

wordpressで条件分岐を使う方法

関係ない画像が表示されるくらいなら無い方がいい

最近は記事毎に画像を作成するのが面倒で、自分のiphotoから適当にサムネイル画像を選んでアップしています。
 
こんな感じです。

海。。。
 

記事の内容とあまりにもかけ離れているので、画像はなしでいきたいところなのですが、画像の設定をしない場合はこんな感じになってしまいます。

スクリーンショット 2013-11-21 3.14.38

ぽっかり。。。
 

imgタグを出力しなくても、画像を囲っていた不要なhtmlは残ってしまうのです。
 

という訳なのでsingle.phpに条件分岐を書いて、画像がある場合にはそのままhtmlタグ毎出力するが、画像がない場合にはhtmlタグも出力しないような感じにしたいと思います。

WordPressカスタマイズで最もよくお世話になってるif文の条件分岐

現在画像はこんな感じで出力されています。
デフォルトのアイキャッチ機能ではなく、カスタムフィールドを利用しています。

<?php
   $attachment_id = get_field('画像');
   $size = "full";
   $image = wp_get_attachment_image_src( $attachment_id, $size );
   $attachment = get_post( get_field('画像') );
   $alt = get_post_meta($attachment->ID, '_wp_attachment_image_alt', true);
   $image_title = $attachment->post_title;
?>
<div class="single-img">
<img src="<?php echo $image[0]; ?>" width="<?php echo $image[1]; ?>" height="<?php echo $image[2]; ?>" alt="<?php echo $alt; ?>" title="<?php echo $image_title; ?>" />
</div>

これを以下のように書き換えます。

<?php
   $attachment_id = get_field('画像');
   $size = "full";
   $image = wp_get_attachment_image_src( $attachment_id, $size );
   $attachment = get_post( get_field('画像') );
   $alt = get_post_meta($attachment->ID, '_wp_attachment_image_alt', true);
   $image_title = $attachment->post_title;
?>
<?php if(get_field('画像')): ?>
   <div class="single-img">
   <img src="<?php echo $image[0]; ?>" width="<?php echo $image[1]; ?>" height="<?php echo $image[2]; ?>" alt="<?php echo $alt; ?>" title="<?php echo $image_title; ?>" />
   </div>
<?php else: ?>
<?php endif; ?>

これで画像が設定されていなければ、htmlタグすらも出力しないような設定にできました。
以下のように表示されます。

スクリーンショット 2013-11-21 3.38.17

しかし、消してみたら消してみたでなんだか寂しい気がしてきました。
この辺は今後臨機応変に対応していきたいと思います。

Comment

コメントを残す

About me

@drox_um
25歳の2年目フロントエンドエンジニア。WEBと音楽が好き。最近カメラを買いました。お仕事募集中。

Ranking