Lazy Loading
WordPress provides lazy loading of images by default as long as width
and height
attributes are present on an img
tag. See
the Lazy Loading announcement
for more details.
Lazy Loading Inline Frames
Inline frames are lazy-loaded by default using the browser-level loading
attribute. Only <iframe>
tags with both width
and height
attributes present will be lazy-loaded to avoid a negative impact on layout shifting. Embedded <iframe>
tags provided via oEmbed in content run through the_content
, the_excerpt
or widget_text_content
filters will have the loading="lazy"
attribute added by default where the web service has provided a width
and height
attribute.
You can customize whether and how inline frames are lazy loaded using the wp_lazy_loading_enabled
filter. For example, to disable lazy-loading of inline frames from post content entirely, you could use the following code:
add_filter( 'wp_lazy_loading_enabled', function( $default, $tag_name, $context ) {
if ( $tag_name === 'iframe' && $context === 'the_content' ) {
return false;
}
return $default;
}, 10, 3 );
You can also use the wp_iframe_tag_add_loading_attr
filter to customize a specific <iframe>
tag. For example, if you wanted to disable lazy-loading on inline frames from a specific provider, like YouTube, you could use the following code:
add_filter( 'wp_iframe_tag_add_loading_attr', function( $value, $iframe, $context ) {
if ( $context === 'the_content' && false !== strpos( $iframe, 'youtube.com' ) ) {
return false;
}
return $value;
}, 10, 3 );