当前位置: 首页 > 知识库问答 >
问题:

删除Wordpress中第一个图像的延迟加载

袁和通
2023-03-14

我想删除Wordpress中第一个图像上的延迟加载,用于每个帖子、页面和主页。

我不使用任何插件的懒惰加载图像,我需要一个默认的懒惰加载的解决方案通过wordpress添加。

我为functions.php找到了这个脚本,但它是为WP Rocket插件找到的,我没有这个插件。

因此,我对其进行了如下修改:

function add_responsive_class($content){
    if ( is_single() || is_page() || is_front_page() || is_home() ) {
        $content = mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8");
        $document = new DOMDocument();
        libxml_use_internal_errors(true);
        $document->loadHTML(utf8_decode($content));

        $imgs = $document->getElementsByTagName('img');
        $img = $imgs[0];

        if ($imgs[0] == 1) { // Check if the post has images first
            $img->setAttribute('class','aligncenter size-full remove-lazy');
            $html = $document->saveHTML();
            return $html;
        }
        
        else {
            return $content;
        }
     }
     else {
         return $content;
     }
}
add_filter ('the_content', 'add_responsive_class');

现在,我只需要删除类为“aligncenter size full remove lazy”的图像上的延迟加载。

我尝试与此,后上述代码,但我有一个错误,它不工作:

function remove_lazy_loading_for_specific_class( $attributes ) {
    $attributes[] = 'class="aligncenter size-full remove-lazy"';
    return $attributes;
}
add_filter( 'wp_img_tag_add_loading_attr', 'remove_lazy_loading_for_specific_class' );

我该怎么做?谢谢

共有2个答案

长孙诚
2023-03-14

我只解决了这个问题:)

function add_responsive_class($content){
    if ( is_single() || is_page() || is_front_page() || is_home() ) {
        $content = mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8");
        $document = new DOMDocument();
        libxml_use_internal_errors(true);
        $document->loadHTML(utf8_decode($content));

        $imgs = $document->getElementsByTagName('img');
        $img = $imgs[0];

        if ($imgs[0] == 1) { // Check if the post has images first
            $img->removeAttribute( 'loading' );
            $html = $document->saveHTML();
            return $html;
        }
        
        else {
            return $content;
        }
     }
     else {
         return $content;
     }
}
add_filter ('the_content', 'add_responsive_class');
宰父学
2023-03-14

不确定这是否有帮助,但为什么不给这个图像一个ID或一个类,并删除WordPress默认使用removeAttribute()方法添加的lazy属性呢。

 类似资料:
  • 我似乎不能为我的生活得到任何图像懒惰加载插件在wordpress工作。我尝试了懒负载,wp懒负载和bj懒负载。网站上的图像似乎没有一个是“懒惰加载”的。我也使用审计工具(chrome审计)测试了这个。当我删除图像(每页大约有50张图像)时,我的审计绩效和其他分数为99。当我加载图像(使用wordpress循环),我的性能下降到64. 我尝试了每一个延迟加载插件,但它们似乎都不是延迟加载。我正在本地

  • 我试图懒惰加载Wordpress中的图像页面-我尝试了插件,但它们似乎都不工作(我只想懒惰加载一些页面上的图像)。 所以我现在尝试用一个插件-http://www.appelsiini.net/projects/lazyload 此插件需要img标记中的图像宽度和高度。 我正在附加自定义字段的图像,比如 是否可以从get_post_meta获取图像的宽度和高度 我看过wp_get_attachme

  • 问题内容: 我正在开发一个eshop。在基于类别的产品页面上,我放置了一些基于javascript的过滤器。但是,如果类别具有很多产品,则会出现问题。该链接具有与我相似的功能… 这个页面多么缓慢,却超过2mb !!! 对我来说,每个产品都需要一半的K字节,但是图像是个问题。.因此,我正在寻找如何延迟加载图像的方法。由于与该网站不同,我的页面具有分页功能,因此我认为加载仅对页面可见的图像是一种解决方

  • 我试图使用jQuery懒惰加载在我的Laravel/Vue项目,但我正在努力让图像出现在我的Vue组件。我有以下img块,我认为会工作: 我确实在这里发现了另一个问题-Vue.js模板中的静态图像src-但是当我尝试该方法时,我得到了这样的结果: 因此,我切换回v-bind方法,但我得到的只是一个带有灰色边框的白色框-没有图像。但是,如果我在src属性上使用v-bind,我可以正确地看到图像。 我

  • 努力为我们的WooCommerce商店实现更好的性能。我们安装了“WP光速”,这实际上给了我们很好的效果。问题是,标题中的图像被延迟加载。看起来很可怕,它们是如何一个接一个地出现的(即使它们已被缓存)。我找到了WPSoL设置以避免URL被延迟加载。我相信这只适用于有洞的页面,而不适用于单个图像。因为我的页眉在每一页上,不包括孔页(所有页),所以不能选择。有没有人可以告诉我,如何排除单一图像URL的

  • 问题内容: 我正在编写一个小的脚本,该脚本在页面加载时将CSS子类分配给三个元素。800ms之后,我希望它删除该子类。 我认为这段代码可以做到: 遗憾的是,任何帮助将不胜感激。提前致谢。 问题答案: 您可以使用 功能: 在指定的延迟后调用函数或执行代码段。