KUSANAGI MAGAZINEで「きもおたわーどぷれす。」が紹介されました! クリックで公式サイトが開きます。

LION BLOG(MEDIA)を例にNative Lazy Loadをプラグイン無しでサムネイルにも適用させる

この記事は約4分で読めます。
記事内に広告が含まれています。

先日、コードだけでGoogle Chrome対応のNative Lazy Loadを実装する記事を書きました。

Chrome 対応Native Lazyloadをコードだけでサイトの画像に一括実装する(コピペ一発、プラグイン不要)
Google Chromeが標準機能でLazyloadに対応したんだってねえ サイトは何もしなくていいの? 「Chromeだけ」と割り切るなら、簡単なコード書く...

しかし、

質問者の写真

嘘吐き! Pagespeed Insightに怒られたよ!
サムネイルまでは遅延読み込みしてくれないじゃん!
スポンサーリンク

LION BLOGにスクリプト無しでLazy Loadを実装するメリット

というわけで本稿では、サムネイルにもChrome対応Native Lazy Loadを適用させる方法を記します。
どのテーマでもいいのですが、ここではLION BLOG(MEDIA含む)を採り上げます。

解答者の写真
LION BLOGとLION MEDIAは「スクリプト無し」による軽快さを売りにしたテーマです

本記事のニーズがあるなら、これらテーマのユーザーじゃないかと思いましたので。
スクリプトを入れずに「オフスクリーン画像の遅延読み込み」で怒られずに済むのですから打ってつけでしょう。

スポンサーリンク

サムネイルへの適用方法

LION BLOGやLION MEDIAじゃなくてもパターン1か2のどちらかでいけると思います。

アーカイブ部分ループ(トップページなど)

パターン1 the_post_thumbnailを使っている場合

まず「loop.php」を子テーマにコピーします……と言いたいところですが「親テーマ」のままでいいと思います。
どうせもう、今後はテーマの更新もないでしょう。
(元々、THE THORのテストバージョンみたいなものなので)
親テーマのままにしておいた方が簡単です。

変更前

<?php if(has_post_thumbnail()) {the_post_thumbnail('icatch');}

変更後

<?php if(has_post_thumbnail()) {the_post_thumbnail('icatch',array( 'alt' =>get_the_title(),'loading' =>lazy));}

パターン2 img srcで直接取得している場合

サムネイルの存在しない記事があるなら、パターン1の箇所のelse以下も書き換えます。

<img src="'.get_template_directory_uri().'/img/img_no.gif" alt="NO IMAGE"/>';}?>
<img src="'.get_template_directory_uri().'/img/img_no.gif" loading="lazy" alt="NO IMAGE"/>';}?>

人気記事一覧ウィジェット

親テーマのfunctions.phpの「人気記事一覧ウィジェットアイテム」を検索して、ループ部分と同様の修正を施してください。

スポンサーリンク

LION BLOGのサムネイル回りの修正

ついでなのでやっておきましょう。
他のテーマでも、やってない場合はしておいた方がいいと思います。

サムネイルサイズの指定(サムネイル左にしたとき)

Pagespeed Insightsの「適切なサイズの画像」で怒られるので修正します。
icatchをmediumに指定し直せばOKです。
(mediumが横幅300の場合)

alt属性を付け加える

Lighthouseで「Image elements do not have [alt] attributes」(画像にalt属性がありません)と怒られるので付け加えます。
“”の中身は空でいいです。私は記事タイトル名にしています。

「画像なし」の方は最初からalt属性が入っています。

修正後のコード

<?php if(has_post_thumbnail()) {the_post_thumbnail('medium',array( 'alt' =>get_the_title(),'loading' =>lazy));} else {echo '<img src="'.get_template_directory_uri().'/img/img_no.gif" loading="lazy" alt="NO IMAGE"/>';}?></a>
スポンサーリンク

Chrome以外はLazy Loadどうするの?

解答者の写真
対応しなくてもいいと思います

以下はあくまで私見です。

LazyLoadには一長一短ありまして。
よく言われるSEO上のマイナス効果はlozad.jsなどIntersectionObserverベースのものを使えばいいのですが。
モバイルですと遅れて読み込むのが間に合わず、空白のまま待つor飛ばされるという現象まであります。
(自分が読み手として自サイトをチェックした感想)

トータルでの読み込み時間は変わらない。
だったらスクリプトなんて1つでも少ない方がいいのですから。

あくまでPagespeed Insightsに怒られたくないのでやってるだけ。
そのうちsafari以外は対応してくるんじゃないかと思いますし、Chromeにだけ対応しておけば十分じゃないかと思います。

スポンサーリンク

まとめ

解答者の写真
極力シンプルなカスタマイズをしたい方
ぜひ試してみてください!
サイトを始めたい・引っ越したい方へ

おすすめレンタルサーバー「ConoHa WING」
Webサーバー処理速度 国内最速!
サイト管理・カスタマイズのタイパも抜群!
自動化AIのWEXALによって他社より負担を減らせます
各種キャンペーン施策によりコスパも抜群!
ConoHaに初めて入会かつ12か月以上のWINGパックなら
下のボタン経由で契約すると最大5000円の割引が受けられます

この記事を書いた人

素人の備忘録です。
素人がゆえにトラブルにぶつかりまくってきたので、同じように困った方の役に立てたらいいなと思ってます。
8年来のKUSANAGI推し。

元公安調査庁職員、発達障害(ADHD)

天満川 鈴をフォローする
WordPress themeカスタマイズ&プラグイン
タイトルとURLをコピーしました