WordPress 4.4 以降では、管理画面からアップロードされた画像を表示させる時に、wp_get_attachment_image()
とかget_the_post_thumbnail()
とかの関数を使ってimgタグを出力すると、自動的にsrcset
とsize
属性がつくようになりました。
例えば、580px x 166px の画像を出力した場合はこんな感じです。
<img width="580" height="166" src="/uploads/img580x166.png" class="attachment-full size-full" alt="" srcset="/uploads/img580x166.png 580w, /uploads/img580x166-300x86.png 300w" sizes="(max-width: 580px) 100vw, 580px">
srcset属性は、画像をトリミングしているものを指定すれば、比率が異なるサイズのものは取ってこないので良いのですが、
size属性は(max-width: 580px) 100vw, 580px"
のように、オリジナル画像の幅以下の場合はViewport幅の100%が表示され、それ以外はオリジナルの画像が表示されるような設定が自動的に付けられてしまいます。
wp_get_attachment_image()
関数の第三引数でaltなどの属性を設定できるのですが、srcset
とsizes
は引数でで変更することができませんでした。
なので、例えばsizes="100v"
とかにしたい場合に困ってしまいます。
WordPressのメディアのsrcsetとsizesを取得・変更する方法
srcset と sizes の取得方法
下記の関数で取得することができます。
- srcset は
wp_get_attachment_image_srcset( $attachment_id, $size = 'medium' )
- sizes は
wp_get_attachment_image_sizes( $attachment_id, $size = 'medium' )
sizes を独自に変更したい場合
少し面倒なのですが、srcsetを取得してimgタグを組み立てればOKそうです。
<?php $thumb_id = get_post_thumbnail_id( $post_id ); // wp_get_attachment_image_url の size のデフォルト値は `thumbnail` $src = wp_get_attachment_image_url( $thumb_id, 'thumbnail' ); $srcset = wp_get_attachment_image_srcset( $thumb_id, 'thumbnail' ); $alt = get_post_meta($thumb_id, '_wp_attachment_image_alt', true); $img = '<img src="' . $src . '" srcset="' . $srcset . '" sizes="100v" alt="' . $alt . '">'; echo $img;
まだ、sizesの書き方が理解しきれていないので、ちゃんと実験して理解したい。
レティナディスプレイの比率もいっぱいになって、モバイル対応が大変だ...
[参考]
- Responsive Images in WordPress 4.4 – Make WordPress Core
- wp_get_attachment_image_sizes() | Function | WordPress Developer Resources
- wp_get_attachment_image_sizes() | Function | WordPress Developer Resources
- wp_get_attachment_image_url() | Function | WordPress Developer Resources
- WordPress 4.4からデフォルトで実装されたレスポンシブイメージってどうなのよ? – Rriver
- HTMLのsrcsetを使って画像をレスポンシブにRetina対応させてみよう | Kia King
Webデザインの新しい教科書 改訂新版 基礎から覚える、深く理解できる。〈HTML5、CSS3、レスポンシブWebデザイン〉
- 作者: こもりまさあき,赤間公太郎
- 出版社/メーカー: エムディエヌコーポレーション
- 発売日: 2016/02/02
- メディア: 単行本
- この商品を含むブログ (1件) を見る