WordPress是否默认启用fetchpriority属性?如何移除?
关于自动出现的fetchpriority属性及移除方法
来源确认
fetchpriority 是WordPress 6.3及以上版本的默认核心特性,它会自动为页面首屏的关键资源(比如首屏图片、核心脚本)添加该属性,目的是告诉浏览器优先加载这些资源,提升首屏渲染速度。
你看到的这个属性并非Elementor或WP Rocket主动添加的,但这两个插件可能会间接触发WordPress的这个逻辑(比如Elementor生成首屏图片时,会被WP核心的资源检测机制识别为关键资源)。WP Rocket确实没有专门的开关控制这个属性,因为它属于WP原生功能。
移除方法(通过钩子实现)
你可以通过WordPress的钩子来移除这个属性,以下是几种常用场景的实现代码:
1. 移除所有图片的fetchpriority属性
将以下代码添加到主题的functions.php文件,或者自定义功能插件中:
// 禁用所有图片的fetchpriority属性 add_filter( 'wp_img_tag_add_fetchpriority_filter', '__return_false' );
2. 针对特定图片移除fetchpriority属性
如果你只想移除部分图片的该属性(比如非首屏图片、特定类的图片),可以写一个自定义判断逻辑:
// 针对特定图片移除fetchpriority属性 function remove_fetchpriority_for_target_images( $add_priority, $image_html, $context ) { // 示例:移除带有"non-critical-image"类的图片的属性 if ( str_contains( $image_html, 'class="non-critical-image"' ) ) { return false; } // 其他情况保留默认逻辑 return $add_priority; } add_filter( 'wp_img_tag_add_fetchpriority_filter', 'remove_fetchpriority_for_target_images', 10, 3 );
3. 移除脚本的fetchpriority属性
如果页面中脚本也被添加了该属性,可通过以下代码移除:
// 移除所有脚本的fetchpriority属性 function remove_script_fetchpriority_attr( $tag, $handle ) { // 可选:指定移除某个特定脚本的属性,比如注释掉下面的判断即可针对所有脚本 // if ( $handle !== 'jquery-core' ) { // return $tag; // } return str_replace( 'fetchpriority="high"', '', $tag ); } add_filter( 'script_loader_tag', 'remove_script_fetchpriority_attr', 10, 2 );
注意:不要直接修改WordPress核心文件,所有自定义代码都应放在主题的
functions.php或独立的自定义插件中,避免主题更新时丢失代码。
内容的提问来源于stack exchange,提问作者Hasan Opu
相关产品推荐
相关产品推荐

