#精品
WordPress 图片延迟加载按CSS选择器排除法

2025-01-12 0 563

近日为客户优化网站前端,碰到一个关于 WordPress 图片延迟加载的定制需求。要求在移动设备上首屏加载的图片禁止延迟加载,而其余图片则开启延迟加载。

虽然813站长大咖曾分享过有关于WordPress集成的图片懒加载优化设置教程,但依然无法满足该客户的要求因为该方法适合通用性网站,会对同类型页面进行设置,例如所有文章页排除第一张图。

其实 WP RocketPerfmatters 插件的懒加载功能就可以实现客户需求,但插件需要在每个页面上额外添加一段懒加载的JS代码。而客户貌似是有洁癖的,不愿意为此功能而添加插件。

好吧,客户的需求永远是第一位的,特别是土豪客户。

HTML <img> loading 属性

语法:<img src=\"URL\" loading=\"eager|lazy\">

loading 属性有两个值:

  • eager:立即加载图片。
  • lazy:延迟加载图片直到满足某些条件。

WordPress 延迟加载实现原理

将内容中的所有<img>标签都加上loading=\"lazy\",虽然WordPress给出了钩子,可以设置排除数量,但并不能个性化选择给谁加上,谁不加上。

解决问题的办法

WordPress 提供了 wp_get_attachment_image_attributes 钩子,它可以过滤图片附件中属性列表。

通过这个钩子,就可以将WordPress默认加上的loading=\"lazy\"变成loading=\"eager\",也就是从延迟加载变成立即加载。

那么条件就可以通过<img>标签的class值来选择。例如文章页中有两张图:

<img src=\"a.jpg\" alt=\"a图\" class=\"zzb-nolazy\" loading=\"lazy\">
<img src=\"b.jpg\" alt=\"b图\" loading=\"lazy\">

给a图加上一个zzb-nolazy类,用来区别b图。

需要将a.jpg关闭延迟加载,可以使用以下代码:

add_filter( \'wp_get_attachment_image_attributes\', \'zhanzhangb_disable_lazy\', 10, 3 );
function zhanzhangb_disable_lazy( $attr ) {
    if ( false !== strpos( $attr[\'class\'], \'zzb-nolazy\' ) ) {
		$attr[\'loading\'] = \'eager\';
    }
    return $attr;
}

这样一来,凡是 class 属性中有zzb-nolazy的图片,都会立即加载。

这样做的好处

如果在首屏加载的图片被延迟加载,那么用户访问页面的时候会有一定的抖动。

浏览器会先将非延迟加载的内容呈现出来,也就是图片后面的内容会移动到本应该展示图片的地方,而等图片加载完成后,这部分内容又会移下去,影响用户体验。

这种情况在 PageSpeed Insights 或 GTmetrix 测试中会报告此类问题(LCP)。

WordPress 图片延迟加载按CSS选择器排除法
首屏中的图片被延迟加载

所以在移动设备的首屏内容中是不应该采用图片延迟加载的,而首屏外的图片则推荐延迟以获得最佳速度体验。

将首屏呈现的图片排除延迟加载之后的测试结果如下:

WordPress 图片延迟加载按CSS选择器排除法
将首屏中所有图片取消延迟加载后的得分
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在!
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。联系邮箱:3496947425@qq.com

813站长大咖 精品文章 WordPress 图片延迟加载按CSS选择器排除法 https://www.813master.cn/1498.html

WordPress极客一枚!无干货,不分享!

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务