【PHP】ワードプレスで条件分岐を使って画像がない場合には表示しないようにする
UPDATE:2013年11月21日
関係ない画像が表示されるくらいなら無い方がいい
最近は記事毎に画像を作成するのが面倒で、自分のiphotoから適当にサムネイル画像を選んでアップしています。
こんな感じです。
海。。。
記事の内容とあまりにもかけ離れているので、画像はなしでいきたいところなのですが、画像の設定をしない場合はこんな感じになってしまいます。
ぽっかり。。。
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タグすらも出力しないような設定にできました。
以下のように表示されます。
しかし、消してみたら消してみたでなんだか寂しい気がしてきました。
この辺は今後臨機応変に対応していきたいと思います。
コメントを残す