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

UPDATE:2013年11月21日

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

最近は記事毎に画像を作成するのが面倒で、自分の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
音楽と面白い人が好き。音楽と面白い人は仲良くして下さい。

Ranking