Media: Introduce filters to customize the results from `wp_get_loading_optimization_attributes()`.
This changeset introduces two filters that allow customizing the loading optimization attributes array returned from `wp_get_loading_optimization_attributes()` for individual HTML tags: * The `wp_get_loading_optimization_attributes` filter can be used to modify the results from the WordPress core logic. * The `pre_wp_get_loading_optimization_attributes` filter can be used to use entirely custom logic and effectively short-circuit the core function. Props pereirinha, mukesh27, spacedmonkey, joemcgill. Fixes #58893. Built from https://develop.svn.wordpress.org/trunk@56651 git-svn-id: http://core.svn.wordpress.org/trunk@56163 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
c4c54f035c
commit
cd11ddbac1
|
@ -5625,6 +5625,25 @@ function wp_get_webp_info( $filename ) {
|
||||||
function wp_get_loading_optimization_attributes( $tag_name, $attr, $context ) {
|
function wp_get_loading_optimization_attributes( $tag_name, $attr, $context ) {
|
||||||
global $wp_query;
|
global $wp_query;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filters whether to short-circuit loading optimization attributes.
|
||||||
|
*
|
||||||
|
* Returning an array from the filter will effectively short-circuit the loading of optimization attributes,
|
||||||
|
* returning that value instead.
|
||||||
|
*
|
||||||
|
* @since 6.4.0
|
||||||
|
*
|
||||||
|
* @param array|false $loading_attrs False by default, or array of loading optimization attributes to short-circuit.
|
||||||
|
* @param string $tag_name The tag name.
|
||||||
|
* @param array $attr Array of the attributes for the tag.
|
||||||
|
* @param string $context Context for the element for which the loading optimization attribute is requested.
|
||||||
|
*/
|
||||||
|
$loading_attrs = apply_filters( 'pre_wp_get_loading_optimization_attributes', false, $tag_name, $attr, $context );
|
||||||
|
|
||||||
|
if ( is_array( $loading_attrs ) ) {
|
||||||
|
return $loading_attrs;
|
||||||
|
}
|
||||||
|
|
||||||
$loading_attrs = array();
|
$loading_attrs = array();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5632,17 +5651,20 @@ function wp_get_loading_optimization_attributes( $tag_name, $attr, $context ) {
|
||||||
* The skip is also applicable for `fetchpriority`.
|
* The skip is also applicable for `fetchpriority`.
|
||||||
*/
|
*/
|
||||||
if ( 'template' === $context ) {
|
if ( 'template' === $context ) {
|
||||||
return $loading_attrs;
|
/** This filter is documented in wp-includes/media.php */
|
||||||
|
return apply_filters( 'wp_get_loading_optimization_attributes', $loading_attrs, $tag_name, $attr, $context );
|
||||||
}
|
}
|
||||||
|
|
||||||
// For now this function only supports images and iframes.
|
// For now this function only supports images and iframes.
|
||||||
if ( 'img' !== $tag_name && 'iframe' !== $tag_name ) {
|
if ( 'img' !== $tag_name && 'iframe' !== $tag_name ) {
|
||||||
return $loading_attrs;
|
/** This filter is documented in wp-includes/media.php */
|
||||||
|
return apply_filters( 'wp_get_loading_optimization_attributes', $loading_attrs, $tag_name, $attr, $context );
|
||||||
}
|
}
|
||||||
|
|
||||||
// For any resources, width and height must be provided, to avoid layout shifts.
|
// For any resources, width and height must be provided, to avoid layout shifts.
|
||||||
if ( ! isset( $attr['width'], $attr['height'] ) ) {
|
if ( ! isset( $attr['width'], $attr['height'] ) ) {
|
||||||
return $loading_attrs;
|
/** This filter is documented in wp-includes/media.php */
|
||||||
|
return apply_filters( 'wp_get_loading_optimization_attributes', $loading_attrs, $tag_name, $attr, $context );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5654,7 +5676,8 @@ function wp_get_loading_optimization_attributes( $tag_name, $attr, $context ) {
|
||||||
*/
|
*/
|
||||||
// TODO: Handle shortcode images together with the content (see https://core.trac.wordpress.org/ticket/58853).
|
// TODO: Handle shortcode images together with the content (see https://core.trac.wordpress.org/ticket/58853).
|
||||||
if ( 'the_content' !== $context && 'do_shortcode' !== $context && doing_filter( 'the_content' ) ) {
|
if ( 'the_content' !== $context && 'do_shortcode' !== $context && doing_filter( 'the_content' ) ) {
|
||||||
return $loading_attrs;
|
/** This filter is documented in wp-includes/media.php */
|
||||||
|
return apply_filters( 'wp_get_loading_optimization_attributes', $loading_attrs, $tag_name, $attr, $context );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5789,7 +5812,17 @@ function wp_get_loading_optimization_attributes( $tag_name, $attr, $context ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $loading_attrs;
|
/**
|
||||||
|
* Filters the loading optimization attributes.
|
||||||
|
*
|
||||||
|
* @since 6.4.0
|
||||||
|
*
|
||||||
|
* @param array $loading_attrs The loading optimization attributes.
|
||||||
|
* @param string $tag_name The tag name.
|
||||||
|
* @param array $attr Array of the attributes for the tag.
|
||||||
|
* @param string $context Context for the element for which the loading optimization attribute is requested.
|
||||||
|
*/
|
||||||
|
return apply_filters( 'wp_get_loading_optimization_attributes', $loading_attrs, $tag_name, $attr, $context );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '6.4-alpha-56650';
|
$wp_version = '6.4-alpha-56651';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
|
Loading…
Reference in New Issue