Determines whether to add fetchpriority='high' to loading attributes.
Parameters
- mixed> $attr Array of the attributes for the element.
$tag_namestringrequired- The tag name.
Source
function wp_maybe_add_fetchpriority_high_attr( $loading_attrs, $tag_name, $attr ) {
// For now, adding `fetchpriority="high"` is only supported for images.
if ( 'img' !== $tag_name ) {
return $loading_attrs;
}
$existing_fetchpriority = $attr['fetchpriority'] ?? null;
if ( null !== $existing_fetchpriority && 'auto' !== $existing_fetchpriority ) {
/*
* When an IMG has been explicitly marked with `fetchpriority=high`, then honor that this is the element that
* should have the priority. In contrast, the Navigation block may add `fetchpriority=low` to an IMG which
* appears in the Navigation Overlay; such images should never be considered candidates for
* `fetchpriority=high`. Lastly, block visibility may add `fetchpriority=auto` to an IMG when the block is
* conditionally displayed based on viewport size. Such an image is considered an LCP element candidate if it
* exceeds the threshold for the minimum number of square pixels.
*/
if ( 'high' === $existing_fetchpriority ) {
$loading_attrs['fetchpriority'] = 'high';
wp_high_priority_element_flag( false );
}
return $loading_attrs;
}
// Lazy-loading and `fetchpriority="high"` are mutually exclusive.
if ( isset( $loading_attrs['loading'] ) && 'lazy' === $loading_attrs['loading'] ) {
return $loading_attrs;
}
if ( ! wp_high_priority_element_flag() ) {
return $loading_attrs;
}
/**
* Filters the minimum square-pixels threshold for an image to be eligible as the high-priority image.
*
* @since 6.3.0
*
* @param int $threshold Minimum square-pixels threshold. Default 50000.
*/
$wp_min_priority_img_pixels = apply_filters( 'wp_min_priority_img_pixels', 50000 );
if ( $wp_min_priority_img_pixels <= $attr['width'] * $attr['height'] ) {
if ( 'auto' !== $existing_fetchpriority ) {
$loading_attrs['fetchpriority'] = 'high';
}
wp_high_priority_element_flag( false );
}
return $loading_attrs;
}
Hooks
- apply_filters( ‘wp_min_priority_img_pixels’,
int $threshold ) Filters the minimum square-pixels threshold for an image to be eligible as the high-priority image.
User Contributed Notes
You must log in before being able to contribute a note or feedback.