vendredi 25 septembre 2026

À propos

Contact

SEO & GEO

Mettre en place le lazy-load natif sans pénaliser le LCP de l’image principale

Le lazy-load natif de WordPress s'applique parfois à l'image la plus importante de la page, retardant son affichage et détériorant le LCP au lieu de l'améliorer.

Par Clément Hadrot • 17 janvier 2022 • 4 min de lecture • Aucun commentaire
Mettre en place le lazy-load natif sans pénaliser le LCP de l'image principale

Depuis WordPress 5.5, l’attribut loading="lazy" est ajouté automatiquement à la quasi-totalité des images de contenu, une optimisation bienvenue pour différer le chargement des images situées bas dans la page. Sur un site d’actualités, cette automatisation s’est retournée contre l’équipe technique : l’image principale de chaque article, celle qui s’affiche immédiatement en haut de page et constitue l’élément le plus grand visible au chargement, se voyait elle aussi différée par ce mécanisme.

Le résultat était visible dans le rapport Core Web Vitals : le Largest Contentful Paint, la métrique qui mesure le temps d’affichage du plus grand élément visible, s’est dégradé après la mise à jour vers WordPress 5.5, précisément à cause de cette image désormais chargée en différé alors qu’elle est visible dès l’arrivée sur la page.

Pourquoi WordPress applique le lazy-load même à cette image

Le mécanisme natif, porté par la fonction wp_filter_content_tags(), ajoute l’attribut loading="lazy" à toute image insérée dans le contenu via l’éditeur, sans distinguer sa position réelle à l’écran une fois la page rendue. WordPress ne peut pas connaître cette position au moment de générer le HTML côté serveur : le calcul dépend de la mise en page finale, de la taille d’écran du visiteur, et de la présence éventuelle d’éléments au-dessus dans le thème.

La solution : exclure explicitement l’image principale

Plutôt que de désactiver le lazy-load pour l’ensemble du site, ce qui reviendrait à perdre le bénéfice de l’optimisation sur toutes les images réellement basses dans la page, la bonne approche consiste à cibler précisément l’image concernée via le filtre wp_img_tag_add_loading_attr, introduit en même temps que le mécanisme lui-même :

add_filter( 'wp_img_tag_add_loading_attr', function ( $value, $image, $context ) {
    if ( 'the_content' === $context && ! did_action( 'ma_recette_first_image_rendered' ) ) {
        do_action( 'ma_recette_first_image_rendered' );
        return false;
    }
    return $value;
}, 10, 3 );
L'essentiel à retenir : WordPress applique le lazy-load à presque toutes les images de contenu par défaut ; L'image visible dès le chargement ne doit jamais être différée ; Le filtre wp_img_tag_add_loading_attr permet une exclusion ciblée sans y toucher manuellement

Une alternative plus explicite : la fonction the_post_thumbnail

Sur ce projet, l’image principale de chaque article n’était en réalité pas insérée dans le contenu éditorial mais affichée via the_post_thumbnail(), l’image mise en avant. Cette fonction accepte un tableau d’attributs personnalisés, ce qui permet de forcer explicitement loading="eager" sans passer par le filtre précédent :

the_post_thumbnail( 'large', array(
    'loading'  => 'eager',
    'fetchpriority' => 'high',
) );

L’attribut fetchpriority="high", plus récent, indique explicitement au navigateur de prioriser le téléchargement de cette image dès qu’il rencontre la balise, un signal complémentaire au retrait du lazy-load qui accélère encore l’affichage sur les connexions les plus lentes.

Ce qu’il ne fallait surtout pas faire

  • Désactiver totalement le lazy-load natif via add_filter( 'wp_lazy_loading_enabled', '__return_false' ), une solution radicale qui aurait fait perdre le bénéfice de l’optimisation sur toutes les images secondaires de chaque article.
  • Ajouter manuellement loading="eager" dans le HTML de chaque article via l’éditeur, une solution non maintenable à l’échelle d’un site avec plusieurs rédacteurs qui publient quotidiennement.

Résultat mesuré après correction

Après la mise en place du filtre ciblé sur l’image mise en avant, le Largest Contentful Paint moyen relevé dans le rapport Search Console est repassé sous le seuil « Bon » en un peu moins de trois semaines, le temps que Google recalcule ses données terrain sur un échantillon suffisant de visites. Les images secondaires plus bas dans les articles ont continué de bénéficier du lazy-load natif sans changement, préservant le gain de bande passante initial sur les pages longues.

Avant d’activer une optimisation automatique du cœur de WordPress à l’échelle d’un site entier, vérifiez toujours son effet sur l’image la plus visible de chaque gabarit : c’est presque toujours elle qui décide du LCP, pas les images du bas de page.

En résumé

Le lazy-load natif de WordPress est une bonne optimisation par défaut, mais il ne connaît pas la mise en page réelle de chaque thème. Exclure explicitement l’image visible au premier écran, via un filtre ciblé ou les attributs de the_post_thumbnail(), permet de conserver tout le bénéfice du mécanisme sans en payer le prix sur la métrique la plus visible pour les visiteurs.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi