• WordPress 4.4のレスポンシブ画像はsrcsetとsizesを自動で出力する

WordPress 4.4のレスポンシブ画像はsrcsetとsizesを自動で出力する

公開日: 執筆:佐藤

WordPress 4.4は、WordPressが生成する画像markupへsrcsetとsizesを追加します。browserは用意された画像sizeから、表示条件に合う候補を選べます。

更新しただけで、すべての画像が最適になるわけではありません。実際のHTML、生成済みの画像size、テーマが指定する表示幅を確認し、必要な場合だけsizesを調整してください。

srcsetへ利用できる画像sizeを並べる

WordPress 4.4のresponsive imagesに関する開発資料では、WordPressが生成する画像markupへsrcsetとsizesを含める仕組みが説明されています。

WordPressは、Media Libraryへ画像をuploadすると複数の中間sizeを作ります。srcsetには、同じ画像から生成された利用可能な候補と幅が並びます。browserはその候補から一つを選び、ほかの候補をdownloadしません。

実際の出力は、次のような形になります。URLと幅は説明用の仮例です。

<img
  src="photo-640.jpg"
  srcset="photo-320.jpg 320w, photo-640.jpg 640w, photo-1024.jpg 1024w"
  sizes="(max-width: 640px) 100vw, 640px"
  alt="商品写真"
>

srcsetは候補の一覧です。CSSで画像を小さく見せる指定でも、候補が一つしかなければbrowserは選べません。元画像だけでなく、attachment metadataにどの中間sizeが記録されているかを確認します。

sizesへ画像が占める幅を示す

sizesは、画像が画面内でどの程度の幅を占めるかをbrowserへ伝えます。WordPress 4.4の既定値は、画像の幅まではviewport幅の100パーセント、それより広い画面では画像本来の幅として扱う形です。

本文が画面全体を使う一列layoutなら、既定値が合う場合があります。しかし、desktopで本文とsidebarを並べ、画像が本文列の一部だけを使うlayoutでは、100vwが実際の表示幅より大きくなることがあります。

テーマ側で表示幅が分かっているなら、wp_calculate_image_sizes filterを使ってsizesを調整できます。たとえば、広い画面で本文列が画面幅の三分の二になる設計なら、その条件をHTMLへ反映します。ただし、見た目だけから固定値を推測せず、themeのbreakpointと本文幅を先に確認してください。

medium_largeと既存画像を分けて確認する

WordPress 4.4には、幅768px、高さ制限なしのmedium_largeが新しい既定の中間sizeとして加わりました。このsizeは、新しくuploadした画像、または画像sizeを再生成した場合に作られます。

したがって、WordPress本体を更新した日を境に、新旧のattachmentで利用できる候補が異なることがあります。既存画像のためだけに一括再生成する前に、代表記事を一件選び、次を確認します。

確認対象 見る内容
HTML srcsetとsizesが出力されるか
attachment metadata 候補になる幅が記録されているか
uploads内のfile metadataに対応する実fileがあるか
CSS 表示幅と縦横比が意図どおりか
network 画面幅を変えたときにどの候補を取得するか

画像sizeの再生成は、file数と保存容量を増やす作業です。対象件数、backup、空き容量、所要時間を確認し、必要なattachmentへ範囲を絞ります。

WordPressが生成しないimg要素は別に扱う

自動付与を期待できるのは、WordPressが生成してattachmentを判別できる画像markupです。テーマへ直接書いたimg、外部serverの画像、独自fieldからURLだけを出すcodeでは、同じ出力になるとは限りません。

「WordPress 4.4へ更新したから対応済み」と判断せず、投稿本文、featured image、gallery、固定template内の画像を一件ずつ代表として選び、最終HTMLを確認してください。

独自の画像出力を直す場合も、srcsetへURLを手作業で並べる前に、WordPressが持つattachment IDと画像metadataを利用できるかを調べます。file差し替えやsize変更のたびにHTMLを手修正する運用を避けるためです。

制作を委託する場合は、対象template、登録する画像size、sizesの根拠、既存画像の再生成範囲、検査した画面幅を受け取ります。実装を任せても、必要な画質、保存容量、更新時の再生成手順を決める責任はsite側に残ります。

最初の一手は、画像を含む代表記事を一件開き、最終HTMLのsrcsetとsizesを確認することです。その後、attachment metadataと実fileを照合し、themeの表示幅に合わない場合だけsizesを調整してください。

戻る