You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

wp_get_loading_optimization_attributes钩子$attr无src,设置fetchpriority失败

解决wp_get_loading_optimization_attributes钩子中$attr无src的问题

在WordPress 6.4+的图片加载优化机制下,wp_get_loading_optimization_attributes钩子的$attr参数里,img标签的src可能被暂存到data-src或其他属性中(用于懒加载优化),导致直接读取$attr['src']会失败。以下是修正后的代码,支持匹配站内/外部图片并添加fetchpriority="high":

function set_fetchpriority_high_on_specific_image( $loading_attrs, $tag_name, $attr, $context ) {
    if ( 'img' === $tag_name && 'the_content' === $context ) {
        // 匹配站内图片:通过附件ID获取URL(更可靠,不受CDN域名影响)
        if ( isset( $attr['data-id'] ) ) {
            $attachment_url = wp_get_attachment_url( $attr['data-id'] );
            if ( $attachment_url === 'https://example.org/a-specific-image.jpg' ) {
                $loading_attrs['fetchpriority'] = 'high';
                unset( $loading_attrs['loading'] ); // 移除懒加载属性,避免冲突
                return $loading_attrs;
            }
        }

        // 匹配外部图片:检查优化后的真实图片地址属性(根据实际页面调整属性名)
        if ( isset( $attr['data-src'] ) && $attr['data-src'] === 'https://example.org/a-specific-image.jpg' ) {
            $loading_attrs['fetchpriority'] = 'high';
            unset( $loading_attrs['loading'] );
            return $loading_attrs;
        }

        // 其他情况移除高优先级属性
        unset( $loading_attrs['fetchpriority'] );
    }
    return $loading_attrs;
}
add_filter(
    'wp_get_loading_optimization_attributes',
    'set_fetchpriority_high_on_specific_image',
    10,
    4
);

关键说明:

  • 站内图片优先使用data-id关联附件ID获取URL,这种方式不会因为CDN域名变更、图片压缩后缀变化导致匹配失效
  • 外部图片需要根据你的WordPress优化配置,检查对应的真实地址属性(常见的有data-src、data-lazy-src,可通过浏览器开发者工具查看图片标签的实际属性)
  • 添加fetchpriority="high"时建议移除loading懒加载属性,高优先级图片应立即加载,避免两种策略冲突

内容的提问来源于stack exchange,提问作者Ashok Kumar Panthri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:57:12