Lazy loading é uma técnica que adia o carregamento de imagens e vídeos até estes estarem prestes a aparecer no viewport do utilizador. Reduz o tempo de carregamento inicial da página, poupa dados móveis e melhora métricas de performance. Desde o WordPress 5.5, está ativo por defeito — mas há nuances importantes que afetam o LCP negativamente se não forem geridas corretamente.
Como funciona o lazy loading nativo em WordPress
Desde WordPress 5.5 (agosto de 2020), o WordPress adiciona automaticamente o atributo loading="lazy" a todas as imagens geradas pela função wp_get_attachment_image() e similares. O browser suporta lazy loading nativo sem JavaScript adicional em todos os browsers modernos.
O comportamento padrão: imagens são carregadas apenas quando o utilizador faz scroll e a imagem está a ~1200px do viewport (depende do browser). Isto reduz significativamente o número de imagens carregadas na carga inicial da página, especialmente em páginas longas.
O problema do lazy loading e o LCP
Aqui está a nuance crítica que a maioria dos guias ignora: a imagem hero ou a imagem principal above the fold nunca deve ter lazy loading.
O LCP (Largest Contentful Paint) mede o tempo que a maior imagem visível no viewport demora a carregar. Se essa imagem tiver loading="lazy", o browser atrasa a sua descoberta e carregamento, aumentando o LCP — exatamente o oposto do pretendido.
O WordPress 6.3 introduziu fetchpriority="high" para a primeira imagem da página (mais provável de ser o LCP), mas nem sempre deteta corretamente qual é a imagem LCP, especialmente em temas com estruturas personalizadas.
Como corrigir: desativar lazy loading na imagem hero
No tema, ao chamar a imagem hero, adicione explicitamente:
echo wp_get_attachment_image(
$hero_image_id,
'full',
false,
['loading' => 'eager', 'fetchpriority' => 'high']
);
Se usar Elementor ou outro page builder, procure a opção "Loading" nas definições da widget de imagem e defina como "Eager".
Lazy loading de vídeos do YouTube e Vimeo
Vídeos embebidos do YouTube são pesadíssimos na carga inicial — um único embed do YouTube adiciona ~500KB de JavaScript ao carregamento da página. A solução: usar uma fachada (facade) — mostrar uma imagem estática do thumbnail do vídeo e carregar o iframe apenas quando o utilizador clica para reproduzir.
Plugins para lazy loading de vídeos
- Embed Privacy: substitui embeds por placeholders com consentimento do utilizador (GDPR-friendly)
- WP YouTube Lyte: fachada leve para vídeos YouTube
- Lite YouTube Embed (via script manual): web component open-source de Paul Irish — a opção mais leve e performante
Para sites com poucos vídeos, a implementação manual do lite-youtube-embed é preferível a adicionar um plugin apenas para isso.
Lazy loading de imagens em page builders
Elementor
O Elementor tem lazy loading próprio que pode entrar em conflito com o do WordPress. Nas definições do Elementor → Performance, verifique as opções de lazy loading e certifique-se que não está a duplicar o comportamento. A imagem de hero no Elementor deve ter "Loading Effect" definido como "None" para garantir carregamento imediato.
WooCommerce e imagens de produto
Nas páginas de arquivo (loja, categorias), as imagens de produto acima do fold não devem ter lazy loading — o utilizador vê-as imediatamente. O WooCommerce não faz esta distinção automaticamente; pode ser necessário filtro personalizado:
add_filter('wp_lazy_loading_enabled', function($default, $tag_name, $context) {
if ($context === 'woocommerce_archive' && is_shop()) {
// lógica para primeiros N produtos
}
return $default;
}, 10, 3);
Verificar se lazy loading está a funcionar
No Chrome DevTools → Network → Filter "img": veja se imagens abaixo do fold têm status "pending" durante a carga inicial e carregam apenas com scroll. As imagens com loading="eager" devem aparecer na carga inicial.
No Lighthouse (Chrome DevTools → Lighthouse), a auditoria "Defer offscreen images" indica se ainda há imagens below-the-fold a carregar sem lazy loading.
Preload de imagens críticas
Além de diferir imagens não-críticas, pode acelerar as críticas com preload. Para a imagem LCP, adicione ao <head>:
<link rel="preload" as="image" href="/path/to/hero-image.webp" fetchpriority="high">
Isto diz ao browser para iniciar o download da imagem imediatamente, antes de processar o resto do HTML. Combinado com o formato WebP (ver o guia de otimização de imagens em WordPress), pode reduzir o LCP em 30-50%.
Os sites dos seus clientes têm problemas de performance?
O nosso serviço de manutenção WordPress inclui auditoria e otimização de performance com resultados mensuráveis.
Otimizar performance