wp_iframe_tag_add_loading_attr( string   $iframe , string   $context  ): string

Adds loading attribute to an iframe HTML tag.

Parameters

$iframe string required
The HTML iframe tag where the attribute should be added.
$context string required
Additional context to pass to the filters.

Return

string Converted iframe tag with loading attribute added.

Source

 function wp_iframe_tag_add_loading_attr( $iframe, $context ) { /* * Iframes with fallback content (see `wp_filter_oembed_result()`) should not be lazy-loaded because they are * visually hidden initially. */ if ( str_contains( $iframe, ' data-secret="' ) ) { return $iframe; } /* * Get loading attribute value to use.  This must occur before the conditional check below so that even iframes that * are ineligible for being lazy-loaded are considered. */ $optimization_attrs = wp_get_loading_optimization_attributes( 'iframe', array( /* * The concrete values for width and height are not important here for now * since fetchpriority is not yet supported for iframes. * TODO: Use WP_HTML_Tag_Processor to extract actual values once support is * added. */ 'width'   => str_contains( $iframe, ' width="' ) ? 100 : null, 'height'  => str_contains( $iframe, ' height="' ) ? 100 : null, // This function is never called when a 'loading' attribute is already present. 'loading' => null, ), $context ); // Iframes should have source and dimension attributes for the `loading` attribute to be added. if ( !  str_contains( $iframe, ' src="' ) || ! str_contains( $iframe, ' width="' ) || ! str_contains( $iframe, ' height="' ) ) { return $iframe; } $value = isset( $optimization_attrs['loading'] ) ? $ optimization_attrs['loading'] : false; /** * Filters the `loading` attribute value to add to an iframe.  Default `lazy`. * * Returning `false` or an empty string will not add the attribute. * Returning `true` will add the default value. * * @since 5.7.0 * * @param string|bool $value    The `loading` attribute value. Returning a falsey value will result in *                              the attribute being omitted for the iframe. * @param string      $iframe   The HTML `iframe` tag to be filtered. * @param string      $context Additional context about how the function was called or where the iframe tag is. */ $value = apply_filters( 'wp_iframe_tag_add_loading_attr', $value, $iframe, $context ); if ( $value ) { if ( !  in_array( $value, array( 'lazy', 'eager' ), true ) ) { $value = 'lazy'; } return str_replace( '<iframe', '<iframe loading="' . esc_attr( $value ) . '"', $iframe ); } return $iframe; }

Hooks

apply_filters ( ‘wp_iframe_tag_add_loading_attr’, string|bool $value , string $iframe , string $context  )

Filters the loading attribute value to add to an iframe. Default lazy .

Changelog

Version Description
5.7.0 Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.