WordPress 画像1枚目がloading="lazy"でLCP悪化の対処方法

loading="lazy"でLCPが悪化

昨日このような記事があった。

Lazy-loadはLCPを悪化させる!? WordPressは2つ目の画像からネイティブLazy-loadを実装するように改良予定

要約するとloading="lazy"がファーストビューの画像に含まれるとLCPの悪化でページの読み込み速度が低下するという内容だった。

この問題は2021年12月リリース予定のWordPress 5.9では改善されるようだ。

functions.phpで1枚目をloading="eager"に

2021年12月まで待たず、すぐに対策したい場合はfunctions.phpで画像の1枚目にあたるpost-thumbnailの画像のloading属性を"eager"に置換すれば解決できる。

loading属性の値がlazyではなくeagerだと遅延読み込みではなく通常の読み込みになる。

以下のコードをfunctions.phpに追記するだけで実装できるので試してみると良いだろう。

// post_thumbnail_htmlのloading="lazyをloading="eager"に置換
add_filter('post_thumbnail_html', 'my_thumbnail_image_html', 10, 3);

function my_thumbnail_image_html($html) {
  $html = str_replace(' loading="lazy"', ' loading="eager"', $html);
  return $html;
}

iwb.jpではこのコードをfunctions.phpに追加してあるので1枚目の画像はloading="eager"、2枚目以降はloading="lazy"になっている。