在WordPress 5.7中,默認情況下,使用瀏覽器級loading屬性會延遲加載iframe?。這將為iframe帶來與WordPress 5.5 延遲加載圖像相同的性能優(yōu)勢。
相關內(nèi)容:
與影響圖像的方式類似,WordPress將loading="lazy"僅添加iframe同時具有width和height屬性標記,以避免對布局偏移產(chǎn)生任何負面影響。該屬性使用WordPress 5.5中引入的 wp_filter_content_tags()功能添加到頁面輸出中,并特別考慮了可擴展性,現(xiàn)在允許將該屬性重新用于此新性能功能。由于延遲加載iframe的注意事項與延遲加載圖像的注意事項相似,因此,請參閱原始圖像延遲加載公告以及有關瀏覽器級延遲加載的文章,以獲取有關該話題的背景信息。
此外,請參見#50756的工單了解更多。
對嵌入內(nèi)容的影響
默認情況下,WordPress會將loading="lazy"?屬性添加到以下iframe:
- 文章內(nèi)容中的iframe(
the_content) - 摘要中的iframe(
the_excerpt) - 文本小工具中的iframe(
widget_text_content)
WordPress網(wǎng)站上使用的大多數(shù)iframe通常來自其嵌入(oEmbed)集成,當粘貼到編輯器中時,它將自動將某些Web平臺資源(例如tweet或YouTube視頻)的URL轉(zhuǎn)換為引用的嵌入式媒體。
這些iframe標簽的標記由相應的Web服務控制,并且只有某些Web服務遵循提供width和height屬性的最佳做法。由于WordPress無法猜測嵌入式資源的尺寸,因此僅當oEmbed iframe?標記同時包含兩個尺寸屬性時,才會添加loading="lazy"屬性。
自定義延遲加載iframe
開發(fā)人員可以自定義是否將iframe以及是否進行延遲加載,其方式類似于對圖片進行延遲加載的方式,主要的過濾條件是現(xiàn)存的wp_lazy_loading_enabled,默認情況下返回true,也就是默認開啟延遲加載iframe。
例如,如果您希望默認情況下針對文章內(nèi)容中的iframe關閉延遲加載,則可以使用以下代碼段:
function disable_post_content_iframe_lazy_loading( $default, $tag_name, $context ) {
if ( 'iframe' === $tag_name && 'the_content' === $context ) {
return false;
}
return $default;
}
add_filter(
'wp_lazy_loading_enabled',
'disable_post_content_iframe_lazy_loading',
10,
3
);
此外,還有一個新的wp_iframe_tag_add_loading_attr過濾器,允許自定義特定iframe標簽。例如,您可以使用此過濾器跳過可能會在最初可見視口中出現(xiàn)的iframe上添加loading屬性,以避免影響“最大內(nèi)容繪畫”度量標準。過濾器具有與wp_img_tag_add_loading_attr圖像相關過濾器相同的簽名。
這是一個示例代碼段,該代碼段將禁用將YouTube視頻嵌入到文章內(nèi)容中的延遲加載iframe:
function skip_loading_lazy_youtube_iframes( $value, $iframe, $context ) {
if ( 'the_content' === $context && false !== strpos( $iframe, 'youtube.com' ) {
return false;
}
return $value;
}
add_filter(
'wp_iframe_tag_add_loading_attr',
'skip_loading_lazy_youtube_iframes',
10,
3
);
請參閱圖像延遲加載公告的“自定義延遲加載”部分以獲取更多指導。





